secuencia de 6 leds con arduino

Anuncio
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().
Descargar