Ciao a tutti.
Ho la necessità di far accendere dei led intermittenti senza usare la delay, perchè il programma non deve smettere di girare per altri motivi.
Inoltre avrei la necessità di accendere il led alla pressione di un tastino e la prima volta dovrebbe rimanere acceso diciamo per 6 secondi e poi cominciare a lampeggiare ogni 3.
Faccio un esempio che è più chiaro.
Pulsante tenuto premuto --> led acceso 6 secondi --> spento 3 secondi --> acceso 3 secondi --> spento 3 secondi --> acceso 3 secondi e cosi via fino a quando non rilascio il pulsante che spegne il led definitivamente.
Io sono partito da
qui (dove manca la lettura del tasto ma quella è una if) ma non mi è chiaro come faccio a tenerlo acceso per 6 secondi e poi ogni 3:
int ledPin = 13;
int value = LOW;
long previousMillis = 0;
long interval = 1000;
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
if (millis() - previousMillis > interval) {
previousMillis = millis();
if (value == LOW)
value = HIGH;
else
value = LOW;
digitalWrite(ledPin, value);
}
}]
int ledPin = 13;
int value = LOW;
long previousMillis = 0;
long interval = 1000;
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
if (millis() - previousMillis > interval) {
previousMillis = millis();
if (value == LOW)
value = HIGH;
else
value = LOW;
digitalWrite(ledPin, value);
}
}