Реле времени для аквариума.

Giovanni
Offline
Зарегистрирован: 28.11.2018

Привет ардуинщикам! Недавно вступил в ваши ряды, собрал схему на основе Arduino nano и DS1307,  начал писать скетч и столкнулся с проблемой. Не могу сделать так, чтобы реле выключалось через пол секунды. Искал информацию, но так и не нашел, вот и решил обратиться к специалистам. Вообщем задача такая: 

Реле времени 1 (включение и выключение реле освещения в аквариуме по времени) - с этим я справился.))

Реле времени 2 (в заданное время включить реле кормушки на пол секунды и выключить) - это не осилил.

Подскажите как реализовать эту задачу?

Вот скетч, который я слепил:

#include <Wire.h> 
#include "RTClib.h" 

RTC_DS1307 rtc;
int Y = 2018;
int M = 11;
int D = 25;
int h = 11;
int m = 55;
int s = 30;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; 
int relay = 8;  // Реле включения света
int relay1 = 7;  // Реле кормушки

void setup(){
    Serial.begin(9600);
    rtc.begin();
    //rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    //rtc.adjust(DateTime(Y, M, D, h, m, s));
    Serial.println("Ready!");
    delay(10);
   
    pinMode(relay, OUTPUT);
    pinMode(relay1, OUTPUT);
    digitalWrite(relay, HIGH);
    digitalWrite(relay1, HIGH);
}
void loop(){
DateTime now = rtc.now(); 

Serial.print(now.year(), DEC); 
Serial.print('/'); 
Serial.print(now.month(), DEC); 
Serial.print('/'); 
Serial.print(now.day(), DEC); 
Serial.print(" ("); 
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]); 
Serial.print(") "); 
Serial.print(now.hour(), DEC); 
Serial.print(':'); 
Serial.print(now.minute(), DEC); 
Serial.print(':'); 
Serial.print(now.second(), DEC); 
Serial.println(); 
delay(1000); 

if (now.hour() == 11 && now.minute() == 40 && now.second() == 0) 
{ 
digitalWrite (7, LOW);
}; 
if (now.hour() == 23 && now.minute() == 00 && now.second() == 0) 
{ 
digitalWrite(7, HIGH);
}; 
if (now.hour() == 12 && now.minute() == 20 && now.second() == 0) 
{  
digitalWrite (8, LOW); 
}; 
if (now.hour() == 12 && now.minute() == 20 && now.second() == 1) 
{ 
digitalWrite (8, HIGH);
};  
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну включить и выключить можете?

Ну так и пишите

включить
delay(500);
выключить

Вот и будет Вам полсекунды