Ciao a tutti, eccomi ancora con un problema che sicuramente sarà una stupidata ma proprio mi sta facendo impazzire…
Ho Arduino Mega e attraverso un ds1307, e un display LCD 1602 sto impostando una centralina di controllo per accensione e spegnimento di 8 canali. Uso 6 pulsanti di controllo e navigazione (perchè tutto è ordinato da menù e gli orari sono modificabili).
Ho creato un
If…
else if …
per definire in che punto del menù mi trovo modifico una variabile che poi controllo durante il loop. questo è l’estratto del codice che credo possa interessare per trovare il problema (perchè il codice intero è piuttosto lungo).
.....
void loop(void)
{
char buffer[10] = ""; DateTime now = RTC.now();
char CH1ora[5]=""; char TCH1ora[5]="";
char CH2ora[5];
readButtons();
navigateMenus();
switch (nMenu){
case 0:
if ( digitalRead( buttonPinEnter ) == LOW) { time = millis(); }
lcd.clear();
sprintf(buffer, "%02d/%02d/%d", now.day(), now.month(), now.year());
lcd.setCursor(0,0);
lcd.print( buffer );
sprintf(buffer, "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
lcd.setCursor(0,1);
lcd.print( buffer );
if (time > 0 && setModeTime < (millis() - time) ) { setMode( now ); }
if ( digitalRead( buttonPinEsc ) == HIGH) {
lcd.setCursor(0,1);
//sprintf( buffer);
}else if ( digitalRead( buttonPinEsc ) == LOW) {
char buffer[10] = "";
(buffer, "%02d/%02d/%d", now.day(), now.month(), now.year());
}
delay(1000);
break;
case 1:
if (digitalRead(buttonPiu) == HIGH) {
ACH1h = (ACH1h++);
delay(200);
}
if (digitalRead(buttonMeno) == HIGH) {
ACH1m = (ACH1m++);
delay(200);
}
if (ACH1h > 23) { ACH1h = 0; }
if (ACH1m > 59) { ACH1m = 0; }
sprintf(CH1ora,"");
sprintf(CH1ora, "%02d:%02d", ACH1h, ACH1m);
lcd.setCursor(0,1);
lcd.print( CH1ora );
break;
case 2:
if (digitalRead(buttonPiu) == HIGH){
FACH1=(FACH1++);
delay(300);
//lcd.clear;
lcd.setCursor(0,1);
lcd.print(FACH1);
}
if (digitalRead(buttonMeno) == HIGH && FACH1 >=1){
FACH1=(FACH1--);
delay(300);
lcd.setCursor(0,1);
lcd.print(FACH1);
}
break;
case 3:
if (digitalRead(buttonPiu) == HIGH) {
TCH1h = (TCH1h++);
delay(200);
}
if (digitalRead(buttonMeno) == HIGH) {
TCH1m = (TCH1m++);
delay(200);
}
if (TCH1h > 23) { TCH1h = 0; }
if (TCH1m > 59) { TCH1m = 0; }
sprintf(TCH1ora,"");
sprintf(TCH1ora, "%02d:%02d", TCH1h, TCH1m);
lcd.setCursor(0,1);
lcd.print( TCH1ora );
break;
case 4:
if (digitalRead(buttonPiu) == HIGH){
FTCH1=(FTCH1++);
delay(300);
//lcd.clear;
lcd.setCursor(0,1);
lcd.print(FTCH1);
}
if (digitalRead(buttonMeno) == HIGH){
FTCH1=(FTCH1--);
delay(300);
//lcd.clear;
lcd.setCursor(0,1);
lcd.print(FTCH1);
}
break;
// ........................
} // SWITCH
else if(newMenuItem.getName()=="ACH1"){
ach();
lcd.print("ACH1");
nMenu=1;
}else if(newMenuItem.getName()=="FACH1"){
fach();
lcd.print(FACH1);
nMenu=2;
}else if(newMenuItem.getName()=="TCH1"){
tch();
lcd.print("TCH1");
nMenu=3;
}else if(newMenuItem.getName()=="FTCH1"){
ftch();
lcd.print(FTCH1);
nMenu=4;
Questo il problema:
I pulsanti buttonPiu e buttonMeno sono i pulsanti con cui modifico le variabili che mi appaiono sul display. Riesco a modificare il valore di ACH1h e ACH1m solo se prima mi muovo all’interno del sottomenù (quindi vado avanti, torno indietro) e i valori si modificano…altrimenti NO!!
Qualcuno riuscirebbe ad aiutarmi?
Grazie in anticipo a chi vorrà provarci.