Página principal

Arduino
Luces de navidad
Luces intermitentes

Cuando empiezas a programar con arduino, lo primero que pruebas es el LED de luz intermitente que viene incorporado en el propio arduino.
Esta práctica  la he diseñado para principiantes que empiezan con arduino y quieren probar un poco de todo.
Seguro que en muchas casas tendréis las clásicas luces de navidad con un botón para cambiar el modo de parpadeo, esta práctica hace eso con arduino.
En mi caso tenía una tira de luces de LED bastante larga, por lo que decidí cortarla para hacer dos tiras y hacerlo mucho mas vistoso.
Las salidas de arduino pueden proporcionar como mucho 40mA, por lo que tenéis que ajustar el valor de las resistencias para que no superen este valor, en mi caso era de 100 ohmios, y como mucho superaba los 20mA.
Para cambiar el modo de parpadeo he utilizado un pulsador.

Esquema.

Diagrama de montaje.

El programa utiliza directivas del procesador como :
#define SALIDA1  9
Esto indica al preprocesador que si encuentra  la etiqueta SALIDA1 lo cambie por 9 antes de compilar.
Es fácil cambiar de un plumazo la puerta de salida en todo el programa.

Cuando se empieza a crear un programa es normal poner puntos de depuración para comprobar en cada momento lo que sucede.
Cuando se termina el programa sobran los puntos de depuración, pero no conviene quitarlos por si mas tarde se necesitan.
El caso que ocupan memoria y no sirven para nada. Esto se soluciona con las directivas de preprocesador: #if  y #endif  .
En mi programa he colocado una etiqueta con el nombre  #define DEBUG  0 .
Si cambiamos el 0 por el 1 , cambiamos entre el modo normal y el de depuración.
Cuando empiezo con un programa empleo la consola serie para ver distintos datos. Luego no me sirve para nada y ocupa memoria.
#if DEBUG==1
  Serial.begin(9600);
#endif 
Con esta instrucción compilo o no dependiendo del valor de DEBUG.
//Con consola serie 3898 bytes    
//Sin consola serie 2158 bytes
Además de ocupar menos memoria, es más rápido.

El programa utiliza varias técnicas:
Repartición de tiempo mediante contadores. tiempo0--;   tiempo2--;  tiempo3--;  tiempo4--;
Cambio de modo de parpadeo leyendo cada 10mS el pulsador.  HIGH==digitalRead(ENTRADA)
En muchas de las opciones se podría haber utilizado las salidas digitales normales con la orden digitalWrite(SALIDA1, LOW); , pero como debía utilizar salidas analógicas, he empleado para todo este método: analogWrite(SALIDA1, a);
Lecturas de secuencia de parpadeo desde una matriz de 10 elementos.
unsigned char secuenciaA1[10]={255,0,255,0,0,0,0,0,0,0};
unsigned char secuenciaB1[10]={0,0,0,255,255,255,255,0,0,0};

Pienso que esta práctica es sencilla y bastante vistosa.

Montaje.

El circuito se puede alimentar fácilmente mediante un POWER BANK, o a través de 3 pilas de 1.5V (4.5V) , el arduino funciona en la mayoría de las veces con tensiones de hasta 4V.

VIDEO

PROGRAMA

Saludos.
Juan Galaz


Bibliografía: