Ciao a tutti, ho bisogno di una casetta molto semplice pr voi, difficile per me
Questo è lo sketch che riporta su un display a doppia riga il tempo e la data attuale, ma senza nessuna azione.
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal.h>
char buffer1[20];
char buffer2[20];
RTC_DS1307 RTC;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int setpin = 6;
boolean statepin = 0;
void setup () {
pinMode (6, INPUT);
digitalWrite (6, HIGH);
Wire.begin();
RTC.begin();
lcd.begin(16, 2);
if (! RTC.isrunning()) {
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
void loop () {
statepin = digitalRead (setpin);
if (statepin == LOW)
{
RTC.adjust(DateTime(__DATE__, __TIME__));
}
DateTime now = RTC.now();
sprintf(buffer1, "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
lcd.setCursor(0,0);
lcd.print( buffer1 );
sprintf(buffer2, "%02d/%02d/%d", now.day(), now.month(), now.year());
lcd.setCursor(0,1);
lcd.print( buffer2 );
delay(1000);
Leggendo su un commento, ho trovato questo, una istruzione che fa accendere un relè alle ore 10 usando la sintassi ">10", ma non credo sia corretta perché se accendo arduino e solo le 11, il relè si accende, mentre credo basterebbe usare la sintassi "=10"
if(now.hour()>10) digitalWrite (1, HIGH)
Il mio problema è comparare un' orario come 10:22:33 utilizzando anche i minuti e i secondi.
se volessi accendere un relè alle ore 10:22:33, come si fa?
credo bisogna realizzare un if che fa la comparazione del' ora, minuti e secondi tipo:
se ora è uguale a 10 e se minuti è uguale a 22 e se secondi è uguale a 33... digitalWrite (1, HIGH)
Ma non so come scriverla, potete aiutarmi??
Grazie comunque