ciao a tutti.
stavo cercando di scrivere/implementare queste 4 righe di codice ma non ne vengo a capo.
quando premo i pulsanti non entro nel menu' per la modifica ora i pulsanto sono cosi' configurati;
una resistenza da 380 ohm a massa l'altro pin del pulsante al +5V i fili di collegamento sono al pulsante prima della resistenza.
tralaltro non dovrebbe aggiornare l'ora? sul monitor seriale mi rimane sempre la stessa ora.
grazie a tutti
Antonio.
#include <Wire.h>
#include <RTClib.h>
#define SET A0
#define PIU A1
#define MENO A2
char buffer[10];
unsigned long time=0;
unsigned long timeSet=0;
int setModeTime=2000;
RTC_DS1307 RTC;
void setup () {
Serial.begin(115200);
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
RTC.adjust(DateTime(__DATE__, __TIME__));
}
pinMode( SET, INPUT );
pinMode( PIU, INPUT );
pinMode( MENO, INPUT );
}
void loop () {
if ( analogRead( SET ) < 1000) { time = millis(); }
DateTime now = RTC.now();
Serial.print("ora: ");
Serial.print(now.hour());
Serial.print(":");
Serial.print(now.minute());
Serial.print(":");
Serial.println(now.second());
if (time > 0 && setModeTime < (millis() - time) ) { setMode( now ); }
delay(1000);
}
void setMode( DateTime now ) {
boolean setMode = true;
int setModeLevel = 0;
int _hour = now.hour();
int _min = now.minute();
int _sec = now.second();
delay( 1000 );
timeSet = millis();
while ( setMode ) {
if ( analogRead(SET) > 1000 || analogRead(PIU) > 1000 || analogRead(MENO) > 1000 ) { timeSet = millis(); }
Serial.println(analogRead(SET));
Serial.println(analogRead(PIU));
Serial.println(analogRead(MENO));
// Set Hour
if ( setModeLevel == 0 ) {
if ( analogRead(PIU) > 1000 && _hour < 24) { _hour++; }
if ( analogRead(MENO) > 100 && _hour > 1) { _hour--; }
Serial.println(_hour);
}
// Set Minute
if ( setModeLevel == 1 ) {
if ( analogRead(PIU) > 1000 && _min < 60) { _min++; }
if ( analogRead(MENO) > 1000 && _min > 1) { _min--; }
Serial.println(_min);
}
// Set Second
if ( setModeLevel == 2 ) {
if ( analogRead(PIU) > 1000 && _sec < 60) { _sec++; }
if ( analogRead(MENO) > 1000 && _sec > 0) { _sec--; }
Serial.println(_sec);
}
if ( analogRead(SET) > 1000 ) setModeLevel++; }
if ( setModeLevel > 2 ) { setModeLevel=0; }
if (timeSet > 0 && (setModeTime*2) < (millis() - timeSet) ) {
RTC.adjust(DateTime(_hour, _min, _sec));
setMode = false;
}
delay(200);
}