ciao a tutti, ho un problema, il programma funziona correttamente quando secondi e' inferiore a 59 , ma quando ricezio e' da 60 in su nel momento che (!radio.available())non avviene la somma ricezio = secondi + 4; e di conseguenza ricezio resta sopra a 60
nel programma e' sempre piu alto di 4 per questo comando if (ricezio < secondi)
come posso fare in modo che funzioni come da 0 a 59?
praticamente se non ho comunicazione ricezio resta sempre sullo stesso valore(se questo avviene quando secondi e' tra 56 e 60
spero di farmi capire....
grazie
if (ricezio < secondi) { //se ricezio e' inferiore a
radio.powerDown(); // data.secondopower Down rf24
Serial.println("enterSleep()");
enterSleep(); // metto in sleep
while (1);// marco: emulo lo sleep
}
wdt_reset(); //resetto watchdog
radio.powerUp(); // //power up rf24
if (millis() - tempo1 > t_intervall) { //azioni da fare
tempo1 = millis(); //ogni interval1=5 ms
radio.startListening();
while (radio.available()) {
digitalWrite(POWER, LOW);
ricezio = secondi + 4; //andra in sleep dopo 5 sec dall'ultima ricezione.id dal rx
dopo = millis(); //memorizzo tempo dopo
digitalWrite(L_DAT, HIGH);
radio.read(&ricezione, sizeof(ricezione));
}
}
delay(5);
radio.stopListening();
digitalWrite(L_DAT, LOW);
radio.write(&data, sizeof(data));
data.secondo = secondi;
data.minuto = minuti;
data.V_batt = volt;
tempo();
temperatura();
pulsanti();
}
void tempo() {
if (millis() - secondiMillis > 600) { //azioni da fare
secondiMillis = millis(); //ogni interval2=1000 ms
secondi = secondi + 1;
if (secondi >= 60) {
secondi = 0;
minuti = minuti + 1;
}
if (minuti >= 99) {
minuti = 0;
}
}
}