allora utiòizzo millis() per la gestione dei tasti del keypad su un ingresso analogico nello specifico per incrementare e diminuire l ora… ora se utilizzo questo codice
#define NONE 0
#define OK 1
#define DESTRA 2
#define SINISTRA 3
#define SU 4
#define GIU 5
/*
ok 715-725
destra 0-5
sinistra 475-485
su 130-135
giu 305-310*/
int TASTO_PREMUTO() {
int LEGGI_TASTO;
LEGGI_TASTO = 0;
LEGGI_TASTO = analogRead(0);
if (LEGGI_TASTO != analogRead(0))
return NONE;
if (LEGGI_TASTO > 1000)
{
inizio4 = millis();
return NONE;
}
if (LEGGI_TASTO < 310 && LEGGI_TASTO > 305)
{
if (millis() - inizio4 > tmp_attiva)
{
inizio4 = millis();
return GIU;
}
}
else
inizio4 = millis();
}
if (POS == 0)
{
switch (TASTO_PREMUTO())
{
lcd.setCursor(5, 1);
case SU:
SoglieCiclo(ORA, 0, 23, 1);
break;
case GIU:
SoglieCiclo(ORA, 0, 23, 0);
break;
case DESTRA:
SoglieCiclo(POS, 0, 1, 1);
break;
case SINISTRA:
SoglieCiclo(POS, 0, 1, 0);
break;
}
non funziona esegue soglieciclo piu volte se invecle lo inserisco direttamente nella prima funzione, ovvero cosi
if (LEGGI_TASTO != analogRead(0))
return NONE;
if (LEGGI_TASTO > 1000)
{
inizio4 = millis();
return NONE;
}
if (LEGGI_TASTO < 310 && LEGGI_TASTO > 305)
{
if (millis() - inizio4 > tmp_attiva)
{
SoglieCiclo(ORA, 0, 23, 0);
inizio4 = millis();
return GIU;
}
}
else
inizio4 = millis();
}
spiegatemi il perche?