Buona sera e scusate il disturbo.
I avrei fatto un programmino però ho problemi.
Questo è un pezzo del file.ino di arduino, non volevo appesentire il sito.
Se utilizzo tutto il codice non mi funzionano i bottoni; se invece commento la parte Calendario() in void loop(void) i bottoni funzionano.
Guardando la seriale si nota che quando utilizzo tutto il codice:
recvRetCommandFinished ok
recvRetCommandFinished err -> pressione del bottone
ecc ecc
Mentre se commento Calendario() si vede passare:
recvRetCommandFinished ok
[1185:1,29,b0] -> pressione del bottone giusto
recvRetCommandFinished ok
Perchè solo se commento Calendrio(), che fa solo il riembimento delle variabili in Nextion è funziona tutto all'infuori del bottone b0, mi funziona la pressione dei tasti e nell'altro caso mi da err alla pressione?
void b2PopCallback(void *ptr)
{
pgCalendario.show();
}
void bsetPopCallback(void *ptr)
{
pgSetData.show();
n0.setValue(datario.ora);
n1.setValue(datario.minuti);
n2.setValue(datario.giorno);
n3.setValue(datario.mese);
n4.setValue((int)datario.anno/100);
n5.setValue(datario.anno-(((int)datario.anno/100))*100);
}
void setup() {
....................
bset.attachPop(bsetPopCallback, &bset);
b2.attachPop(b2PopCallback, &b2);
memset(myStr, 0, sizeof(myStr));
}
void Calendario()
{
memset(myStr, 0, sizeof(myStr));
MI.setValue(datario.minuti);
HH.setValue(datario.ora);
AAAA.setValue(datario.anno);
MM.setValue(datario.mese);
GG.setValue(datario.giorno);
GGG.setText(dayNames[datario.g_setti]);
sprintf(myStr, "%s°C", floatToString(myStr, Temperatura_Ambiente(), 1));
TC.setText(myStr);
sprintf(myStr, "%s°C", floatToString(myStr, Temperatura_Acquario(), 1));
TA.setText(myStr);
sprintf(myStr, "%s %%", floatToString(myStr, Umidita_Ambiente(), 1));
Hu.setText(myStr);
sprintf(myStr, "%s %%", floatToString(myStr, Leggi_pH(), 1));
pH.setText(myStr);
LeggiRele();
imgOUT1.setPic((bitRead(Rele, 0))?6:(bitRead(ProgRele, 0))?7:8);
imgOUT2.setPic((bitRead(Rele, 1))?6:(bitRead(ProgRele, 1))?7:8);
imgOUT3.setPic((bitRead(Rele, 2))?6:(bitRead(ProgRele, 2))?7:8);
imgOUT4.setPic((bitRead(Rele, 3))?6:(bitRead(ProgRele, 3))?7:8);
imgOUT5.setPic((bitRead(Rele, 4))?6:(bitRead(ProgRele, 4))?7:8);
imgOUT6.setPic((bitRead(Rele, 5))?6:(bitRead(ProgRele, 5))?7:8);
imgOUT7.setPic((bitRead(Rele, 6))?6:(bitRead(ProgRele, 6))?7:8);
imgOUT8.setPic((bitRead(Rele, 7))?6:(bitRead(ProgRele, 7))?7:8);
lunario();
imgMoon.setPic(moonphase()+8);
memset(myStr, 0, sizeof(myStr));
}
void loop(void)
{
nexLoop(nex_listen_list);
leggi_datario();
LeggiTasti();
Calendario();
}
Cosa scrivo di sbagliato? E' come se non ci fosse sincronismo fra la pressione del tasto e il loop del programma, in poche parole non becco mai il tempo giusto!!! Mi potreste aiutare per piacere?