SECUENCIA DE 6 LEDS CON ARDUINO Este proyecto es resultado de mi primera práctica con Arduino. La secuencia de luces permite el encendido y apagado de 6 LEDs, desde el exterior hacia el centro y del centro hacia el exterior. La ubicación de los LEDs es como se muestra en el siguiente cuadro: Primera secuencia: rojo, amarillo, verde (desde el exterior hacia el centro) Segunda secuencia: verde, amarillo, rojo (del centro hacia el exterior) Las dos secuencia se repiten indefinidamente, con un tiempo de encendido entre 200 a 1000 ms (los valores se obtienen aleatoriamente). Componentes Arduino UNO Protoboard 6 LEDs 6 resistencias de 220 ohms (rojo, rojo, amarillo) Circuito Los 6 LEDs, con sus respectivas resistencias, se conectan a las salidas digitales del Arduino, se acuerdo a la siguiente tabla: PIN DIGITAL LED D4 4 D5 5 D6 6 D7 7 D8 8 D9 9 En el gráfico de la placa (protoboard) podemos observar con mayor detalle la ubicación de los diversos componentes del circuito. El esquema electrónico es como sigue: Código El flujo del código dentro del sketch podemos representarlo del siguiente modo: A continuación detallaremos las principales partes del código, implementadas en las siguientes funciones: void setup() void loop() void ledsAlCentro(int pausa) void ledsAlExterior(int pausa) void setup() Inicializa los pines digitales de Arduino, configurando dichos pines como salida (OUTPUT). void loop() Ejecuta las dos funciones ledsAlCentro() y ledsAlExterior(), encargadas de encender/apagar los LEDs de la primera y segunda secuencia, respectivamente. void ledsAlCentro(int pausa) Esta función tiene la responsabilidad de encender y apagar los LEDs de la primera secuencia, desde el exterior hacia el centro (los LEDS del mismo color se encienden/apagan simultáneamente): rojo(4 y 9), amarillo(5 y 8), verde (6 y 7) Para optimizar el código, podemos identificar en los steps (5,3,1) una serie de números impares en forma descendente; cuya formulación matemática Sin = 2n + 1, donde n= . . . , 3, 2, 1, 0 La misma que se “traduce” en el código como Sin = 2 * step + 1; donde step= 2, 1, 0 La función ledsAlCentro recibe como parámetro la variable pausa, cuyo valor fue obtenido previamente dentro de función loop(). Los valores de la pausa pueden ser: 200, 400, 600, 800 y 1000 milisegundos, generados aleatoriamente. void ledsAlExterior(int pausa) Esta función tiene la responsabilidad de encender y apagar los LEDs de la segunda secuencia, del centro hacia el exterior (los LEDS del mismo color se encienden/apagan simultáneamente): Verde(6 y 7), amarillo(5 y 8), rojo (4 y 9) Para optimizar el código, podemos identificar en los steps (1,3,5) una serie de números impares en forma ascendente; cuya formulación matemática Sin = 2n + 1, donde n= 0, 1, 2, 3, . . . La misma que se “traduce” en el código como Sin = 2 * step + 1; donde step= 0, 1, 2 La función ledsAlExterior recibe como parámetro la variable pausa, cuyo valor fue obtenido previamente dentro de función loop(). Los valores de la pausa pueden ser: 200, 400, 600, 800 y 1000 milisegundos, generados aleatoriamente. Variantes Secuencia de Izquierda-Derecha: se pueden encender y apagar los LEDs secuencialmente, desde la izquierda (LED4) hacia la derecha (LED9). Secuencia de Derecha-Izquierda: se pueden encender y apagar los LEDs secuencialmente, desde la derecha (LED9) hacia la izquierda (LED4). Modificar el rango de la pausa: se puede cambiar el rango de valores de la pausa, modificando el inicio y/o fin de la función random().