#10Principiante

Led Encendido con Botón (On Off)

4.8(100)
157 completado
Led Encendido con Botón (On Off)
Un proyecto de conmutación que cambia el estado del LED (encendido/apagado) cada vez que se pulsa un botón. Enseña la variable de estado y la lógica de rebote.

Video

Diagrama del circuito

Led Encendido con Botón (On Off) - Circuit

Código fuente

Arduino (C++)
1int ledState = 0;
2
3void setup() {
4  pinMode(13, INPUT);
5  pinMode(7, OUTPUT);
6}
7
8void loop() {  
9  if (digitalRead(13) == 1) {
10    ledState = !ledState;
11    digitalWrite(7, ledState);
12    delay(300);
13  }   
14}

Preguntas frecuentes

¿Qué es el «debounce» y por qué es necesario?▾

En el momento en que se pulsa un botón mecánico, este se abre y se cierra varias veces durante unas milisegundos (rebote). Arduino puede interpretar esto como varias pulsaciones y el LED queda en un estado aleatorio. El rebote se elimina esperando un breve periodo de tiempo (por ejemplo, 50 ms) tras el cambio de estado.

A veces el LED no cambia o cambia dos veces, ¿por qué?▾

Por lo general, el tiempo de rebote falta o es demasiado corto. Además, solo hay que detectar el momento en que se «pulsa» el botón (estado anterior LOW, nuevo estado HIGH); si el estado cambia en cada ciclo mientras se mantiene pulsado el botón, el LED parpadeará de forma aleatoria.

¿Para qué sirve la variable de estado?▾

Guarda en la memoria si el LED está encendido o apagado. Con cada pulsación válida, la variable se invierte (ledDurum = !ledDurum) y el LED se controla en función de este valor.

¿Puedo controlar diferentes LED con varios botones?▾

Sí, basta con que mantengas una variable por cada botón, con su estado anterior y su estado del LED. Si vas a utilizar muchos botones, será más ordenado usar matrices y código de rebote basado en millis().

Led Encendido con Botón (On Off) | BlueGrays