DS1307 e pulsanti

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);
    }

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.