Buongiorno a tutti, come mi avete consigliato in altri post ho iniziato a usare i millis anzichè il delay per la mia centralina del presepe in quanto avevo necessità di inserire delle subroutine.
Ho cercato su internet ma ho trovato tutti tutorial dove millis non viene usato come "scorrere del tempo".
Ho due problemi però:
-
una volta finito premuto il pulsante inizia il ciclo if = stato 1, una volta finito esegue l'else ma poi se premo di nuovo non succede niente
-
se premo il pulsante per esempio dopo 10 secondi da quando ho acceso arduino la giornata del presepio dura 10 secondi in meno....
Qualche consiglio??
Vi posto lo sketch
unsigned long currentMillis = 0;
unsigned long tnotte = 14335;
unsigned long tgiorno = 22672;
unsigned long talba = 4000;
unsigned long tstato = 1;
unsigned long trascorso = 0;
int TouchSensor = 8; // Collegato a pin SIG del sensore
int val = 0; // si userà val per conservare lo stato del pin di input
int vecchio_val = 0; // si userà vecchio_val per conservare lo stato del pin di input al passo precedente
int stato = 0;
void setup() {
strip.setBrightness(BRIGHTNESS);
strip.begin();
strip.show(); // Initialize all pixels to 'off'
pinMode(lampioni,OUTPUT);//imposta il pin del Led come uscita
pinMode(TouchSensor, INPUT);
}
void loop() {
int val = digitalRead(TouchSensor); // legge il valore dell'input e lo conserva
// controlla se è accaduto qualcosa
if ((val == HIGH) && (vecchio_val == LOW)) {
stato = 1 - stato;
vecchio_val = val;
}
if (stato == 1) {
unsigned long currentMillis = millis();
if(currentMillis < tnotte) {
//save the last time you blinked the LED
tremolioon ();
mezzanotte ();
}
trascorso = tnotte;
if(currentMillis - trascorso< talba) {
alba ();
}
trascorso = (tnotte + talba);
if(currentMillis - trascorso < tgiorno) {
giorno();
tremoliooff ();
}
trascorso = trascorso + tgiorno;
if(currentMillis - trascorso < 10) {
stato = 0;
vecchio_val = 0;
}
}
else {
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, 10, 10 ,10 );
}
strip.show(); // invii tutti i dati alla LED-s
}
}