Многие, кто держат рыбок в аквариуме, порой задаются вопросом, что и как будут кушать их рыбки в периоды длительного отсутствия хозяев, например, когда они в командировке или отпуске? Решением являются автоматические кормушки для рыб, но они относительно недешевые. Впрочем, можно сделать такую кормушку своими руками.

В данном проекте мы создадим автоматический механизм кормления рыбы с таймером, используя Arduino. Каждые 12 часов он будет кормить рыбу. Мы можем установить любое время, которое захотим, потому что в этом проекте мы используем часы реального времени.
Для начала возьмем пластиковую бутылку, горловая часть которой будет использоваться нами как бункер для хранения корма.

Далее мы разрежем ручку и просверлим отверстие на одном конце. Это необходимо для механизма открывания и подачи корма.

Второй конец ручки следует прикрепить к валу сервомотора с помощью пластикового переходника.

Теперь соедините вместе Arduino, серводвигатель и часы реального времени в соответствии со схемой подключения, приведенной далее.

Для проверки системы сначала лучше загрузить следующий тестовый код.
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9);
}
void loop() {
myservo.write(0);
delay (300);
myservo.write(45);
delay (300);
}
Когда вы убедитесь, что все работает нормально, можете загрузить рабочий код автоматической кормушки для рыб, не забыв изменить даты и прочие переменные, которые нужны для ваших задач.
#include <DS1302.h>
#include <Servo.h>
Time t;
Servo myservo;
int Hour;
int Min;
int Sec;
DS1302 rtc(2, 3, 4);
void setup()
{
myservo.attach(9);
myservo.write(45);
// Установим часы в рабочий режим и отключим защиту от записи
rtc.halt(false);
rtc.writeProtect(false);
Serial.begin(9200);
// Следующие строки можно закомментировать, чтобы использовать значения, уже сохраненные в DS1302
rtc.setDOW(SUNDAY); // Установим день недели на воскресенье
rtc.setTime(8, 59, 50); // Установим время на 12:00:00 (24-часовой формат)
rtc.setDate(10, 25, 2021); // Установим дату на 25 октября 2021 г.
}
void loop()
{
t = rtc.getTime();
Hour = t.hour;
Min = t.min;
Sec = t.sec;
// Serial.print(Hour);
// Serial.print(":");
// Serial.print(Min);
// Serial.print(":");
// Serial.println(Sec);
// установим время кормления рыб
if ((Hour== 10 && Min== 0 && Sec== 2)||(Hour== 21 && Min== 0 && Sec== 2)) {
myservo.write(0);
delay (300);
myservo.write(45);
delay (300);}
}
© digitrode.ru