Encendido de 3 LED s con Flanco ascendente y previo apagado con milis()

Buenas, es mi primer post en este foro.

He buscado y leido en otros posts y documentación y no he conseguido resolver mis dudas ya que el ejercicio que planteo es muy específico:
El ejercicio que planteo se basa en cuando pulsas una vez el botón se encienda el primer Led y se apague a los 30 seg.
Cuando lo pulsas dos veces se enciendan los dos Leds y se apaguen a los 40 seg.
Por último cuando pulsas el botón 3 veces se enciendan los 3 Leds y se apaguen a los 60 seg.

Hasta ahora he podido hacer esta parte de código donde configuro la botonera pero no se utilizar la función milis para que se apaguen los leds, ya que al utilizarla siempre me inutiliza el resto de código, alguien podría guiarme para resolver esta duda tan básica?

Muchas gracias de antemano
JoseBagarre :slight_smile: :slight_smile:

const int buttonPin = 2; // the pin that the pushbutton is attached to
const int ledPin1 = 13; // the pin that the LED is attached to
const int ledPin2= 12;
const int ledPin3= 8;

unsigned long tiempo=0;

int buttonPushCounter = 0; // counter for the number of button presses
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button

void setup() {
// initialize the button pin as a input:
pinMode(buttonPin, INPUT);
// initialize the LED as an output:
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
// initialize serial communication:
Serial.begin(9600);
}

void loop() {
// read the pushbutton input pin:
buttonState = digitalRead(buttonPin);

// compare the buttonState to its previous state
if (buttonState != lastButtonState) {
// if the state has changed, increment the counter
if (buttonState == HIGH) {
// if the current state is HIGH then the button went from off to on:
buttonPushCounter++;
Serial.println("on");
Serial.print("number of button pushes: ");
Serial.println(buttonPushCounter);
} else {
// if the current state is LOW then the button went from on to off:
Serial.println("off");
}
// Delay a little bit to avoid bouncing
delay(50);
}
// save the current state as the last state, for next time through the loop
lastButtonState = buttonState;

if (buttonPushCounter == 1) {
digitalWrite(ledPin1, HIGH);
} else if (buttonPushCounter == 2) {
digitalWrite(ledPin2, HIGH);
} else if (buttonPushCounter == 3) {
digitalWrite(ledPin3, HIGH);
}

}

Bienvenido al foro. Lo primero que debes hacer antes de continuar es pasarte por las Normas del foro después de leerlas, corrige tu post para que el código quede entre etiquetas en lugar de texto plano

tu codigo verse asi
entre etiquetas

Hice unos cambios a tu código pero para tener un foro ordenado, primero corrige tu post y después publico el código

Estudiar funciona bastante bien en estos casos. Una buen lugar puede ser este: ArduWiki.

Como moderador primero debo recalcar el pedido de @RIG
Edita tu código usando etiquetas.

Para tu problema solo ve a Ve a Documentación => Indice de temas tutoriales => millis()
Tienes muchos tutoriales ahi.