Haustierfütterautomat für Wellensittiche, Hamster, Meersc...
На английском языке: https://www.printables.com/model/1294646-pet-feeder-with-rtc-servo-arduinoesp.
Der Fütterungsautomat kann kleines Futter zeitgesteuert, z.B. jeden Tag um 18:00 Ура, ausgeben. Вы можете использовать сервопривод, его базовый модуль RTC DS1307 и микроконтроллер (например, главный I2C-fähig).
Список:
-Сервопривод 9g -RTC-модуль с I2C на базе DS1307 -Arduino (z.B. Uno) или ESP (z.B. ESP32)
3D-Драк:
Alle Teile werden ohne Stützstruktur gedruckt, bei Teil 3 и 4 empfehle ich einen Brim. Этот материал можно использовать только из PLA. Für Teil 3 и 4 gibt es eine dünne und eine dicke Version. Wähle nach der Größe определяет Футтерса.
Монтаж:
Шраубе Часть 1, палочка или Бретт.
Часть 4 и часть 3.
Setze Teil 3-4 mit der Nase in die Aussparung an Teil 1 und fixiere es mit einer Schraube (Loch durch Teil 1 vorhanden) или Leim, z.B. Heiß- или Kunststoffkleber.
Setze den Servo в Части 1.
Stecke Teil 2 на сервоприводе.
Аппаратное обеспечение:
Аппаратное обеспечение поставляется с Bild verkabelt.
Микроконтроллер может быть использован для управления I2C. Ich habe einen Arduino Uno benutzt.
Код:
Мой код очень увлекателен:
Die Zeit wird abgefragt.
В 18:00 часов (или других других программных программ) gibt es eine serielle Meldung.
Der Servo reagiert und öffnet und schließt sich kurz.
Вы можете ввести код для вашего Vorstellungen и вашего микроконтроллера для использования.
// СОЕДИНЕНИЯ:
// DS1307 СДА --> СДА
// DS1307 СКЛ --> СКЛ
// DS1307 VCC --> 5 В
// DS1307 Земля --> Земля
#include
#include
#include
Сервопривод мойсерво;
интервал значений;
RtcDS1307<Двухпроводной> Rtc(Проводной);
bool wasError(const char* errorTopic = "")
{
ошибка uint8_t = Rtc.LastError();
если (ошибка!= 0)
{
Serial.print("[");
Serial.print(errorTopic);
Serial.print("] Ошибка проводной связи (");
Serial.print (ошибка);
Serial.print(): ");
переключатель (ошибка)
{
случай Rtc_Wire_Error_None:
Serial.println("(нет?!)");
перерыв;
случай Rtc_Wire_Error_TxBufferOverflow:
Serial.println(«переполнение буфера передачи»);
перерыв;
случай Rtc_Wire_Error_NoAddressableDevice:
Serial.println(«Ни одно устройство не ответило»);
перерыв;
случай Rtc_Wire_Error_UnsupportedRequest:
Serial.println(«устройство не поддерживает запрос»);
перерыв;
случай Rtc_Wire_Error_Unspecific:
Serial.println(«неизвестная ошибка»);
перерыв;
случай Rtc_Wire_Error_CommunicationTimeout:
Serial.println(«Тайм-аут связи истек»);
перерыв;
}
вернуть истину;
}
вернуть ложь;
}
недействительная настройка ()
{
Serial.begin(115200);
myservo.attach(9);
myservo.write(20);
Serial.print(«Компилируем: „);
Serial.print(__ДАТА__);
Серийный.принт(“ „);
Serial.println(__TIME__);
Ртк.Начать();
#если определено(WIRE_HAS_TIMEOUT)
Wire.setWireTimeout(3000 /* us */, true /* reset_on_timeout */);
#endif
RtcDateTime скомпилирован = RtcDateTime(__DATE__, __TIME__);
printDateTime (скомпилировано);
Серийный.println();
если (!Rtc.IsDateTimeValid())
{
if (!wasError(“настройка IsDateTimeValid»))
{
Serial.println(«RTC-Zeit ungültig, setze Zeit auf Kompilierzeit.»);
Rtc.SetDateTime(скомпилировано);
}
}
если (!Rtc.GetIsRunning())
{
if (!wasError(«настройка GetIsRunning»))
{
Serial.println(«RTC war nicht aktiv, starte jetzt.»);
Rtc.SetIsRunning(истина);
}
}
RtcDateTime сейчас = Rtc.GetDateTime();
if (!wasError(«настройка GetDateTime»))
{
if (теперь < скомпилировано)
{





























