top of page

Secuencias luminosas

Objetivo: Al pulsar un botón se enciende una secuencia de leds. Al voler a pulsar el botón aparece otra diferente. Así hasta 5 combinaciones diferentes. Y vuelta a empezar. Recuerda a las combinaciones de luces de los arboles de navidad.

 

Comentarios: Para llevar a cabo el circuito hemos tenido que solventar tres dificultades:

1.- La gestión de encendido y apagado de los 6 leds simultánea- mente ocupa muchas líneas de código. Lo hemos solucionado incorporando la función ilumina( ).


2.- Si durante la iluminación de los leds (con el delay(250)) se pulsa el botón, éste no és detectado. Lo hemos solucionado haciendo un bucle de pequeños delay(50).


3.- Cada vez que se pulsa el botón se tiene que esperar un pequeño espacio de tiempo antes de detectar una nueva pulsación. Lo hemos solucionado incluyendo un delay(250) después de la detección de la pulsación.

 

Vídeo:

 

Componentes: Arduino Uno 3R, 1 pulsador, 6 LED rojos, 1 LED verde, 7 resistencias de 220Ω , 1 resistencia de 10KΩ

 

Imagen del circuito:

 

Código:

int iluminacion = 0; int interrupcion = 0; int estadoPulsador = 0; void setup() { pinMode(2, INPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); Serial.begin(9600); } void loop() { interrupcion=0; switch (iluminacion){ case 0: ilumina(1,0,0,0,0,0,0,250); break; case 1: ilumina(0,1,0,0,0,0,0,250); ilumina(0,0,1,0,0,0,0,250); ilumina(0,0,0,1,0,0,0,250); ilumina(0,0,0,0,1,0,0,250); ilumina(0,0,0,0,0,1,0,250); ilumina(0,0,0,0,0,0,1,250); ilumina(0,0,0,0,0,1,0,250); ilumina(0,0,0,0,1,0,0,250); ilumina(0,0,0,1,0,0,0,250); ilumina(0,0,1,0,0,0,0,250); break; case 2: ilumina(0,1,0,0,0,0,1,250); ilumina(0,0,1,0,0,1,0,250); ilumina(0,0,0,1,1,0,0,250); ilumina(0,0,1,0,0,1,0,250); break; case 3: ilumina(0,1,0,1,0,1,0,500); ilumina(0,0,1,0,1,0,1,500); break; case 4: ilumina(0,1,1,1,1,1,1,500); ilumina(0,0,0,0,0,0,0,500); break; default: iluminacion=0; delay(250); } } void ilumina(int p3, int p4, int p5, int p6, int p7, int p8, int p9, int espera){ if (interrupcion==0){ digitalWrite(3,p3); digitalWrite(4,p4); digitalWrite(5,p5); digitalWrite(6,p6); digitalWrite(7,p7); digitalWrite(8,p8); digitalWrite(9,p9); for (int i = 0; i<espera/100; i++){ estadoPulsador = digitalRead(2); if (estadoPulsador == 1){ interrupcion = 1; iluminacion = iluminacion + 1; delay(250); return; } else{ delay(50); } } } }

© 2023 by ClipsArduino. Proudly created with Wix.com

  • Grey Facebook Icon
  • Grey Twitter Icon
  • Grey Google+ Icon
bottom of page