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
![]()
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);
}
}