Mostrando entradas con la etiqueta navidad. Mostrar todas las entradas
Mostrando entradas con la etiqueta navidad. Mostrar todas las entradas

jueves, 13 de marzo de 2025

Arduino. Luces de navidad 3

  Página principal

Arduino
Luces de navidad 3


Estaba estas navidades en un bar, y me fije en unas luces de navidad.
El conjunto de luces led estaba alimentado por dos cables.
Pero lo que me extrañaba era que manejaba dos grupos de leds independientemente.
¿Como era posible que mediante dos lineas pudiese manejarse dos grupos de leds?
Después de pensarlo, llegué a la solución.
Los leds se intercalaban en polaridad, con lo cual dependiendo como se alimentasen se encendían unos u otros.
Para encender los dos grupos de leds a la vez, se alimentan alternativamente cada grupo de leds, pero a una velocidad tan rápida que el ojo humano no distinga si están apagados.
El manejo de la luminosidad se hace mediante modular el ancho del pulso.
No he querido utilizar interrupciones, que hubiese simplificado la programación.





Con todos los leds del mismo grupo del mismo color funciona bien, pero si mezclamos leds de diferentes colores, se enciende el led que tiene el voltaje umbral mas bajo.
Para solucionar esto se utilizan resistencias de 100 ohmios para cada tipo de leds.
El las luces de navidad comerciales se arregla esto utilizando el mismo tipo de led, pero la envoltura de plástico es de distinto color.
Otra de las formas es integrar una resistencia interna en el propio led.




Este tipo de montajes me gusta mucho por su simplicidad, pero muy brillantes. ;)
PROGRAMA

VIDEO

Espero que os haya gustado este pequeño circuito.


Saludos.
Juan Galaz



Bibliografía:


http://seta43.duckdns.org/navid.html
http://seta43.duckdns.org/navi.html


viernes, 1 de marzo de 2019

Arduino Digisparck - Luces de navidad - Luces intermitentes

Página principal


Arduino Digisparck
Luces de navidad
Luces intermitentes

Después de haber creado el montaje de Luces de navidad, se me pasó por la cabeza hacerlo funcionar con la placa Digisparck que utiliza el chip Attiny85.
Digisparck es básicamente un Attiny85 (alrededor de 1.15 €) con una interfaz programable sencilla a través de USB y regulador de voltaje en un solo chip. Tiene 6 pines de salida / entrada con los cuales puede conectar dispositivos I2C (con pines SDA un SCK), dispositivos de entrada analógica.





En el Entorno IDE de arduino 1.8.5.

Debemos en preferencias añadir un gestor adicional de tarjetas.
http://digistump.com/package_digistump_index.json

En menú herramientas ->placa -> Gestor de placas.
    Añadir  Digistump AVR Boards

Reiniciamos la IDE de arduino y en menú herramientas ->placa -> Digispark (default 16.5MHz)

Para Linux  que es mi caso Debian 9.5 debemos realizar una serie de cambios.
Como root creamos un fichero.

pluma /etc/udev/rules.d/digispark.rules

(el editor que utilizo es pluma, entorno MATE)

Insertamos el siguiente texto:

SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="0753", MODE="0660", GROUP="dialout"

Guardamos y cerramos.

Compilamos el programa, y lo cargamos en el Digisparck, que no estará conectado.
Nos saldrá un mensaje que tenemos 60 segundos para insertar la tarjeta.
Insertamos la tarjeta, y si todo va bien nos cargará el programa.
Ahora nos falta desconectar la tarjeta Digisparck y volver a conectarla.
Después de unos segundos veremos nuestro programa funcionando en la  Digisparck.
Debemos tener desconectados todos los pin de la placa antes de programar desde el USB.


Mensaje de la consola de arduino.



Montaje alimentado desde una Power Bank


Montaje alimentado desde 3 pilas de 1,5V

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.


PROGRAMA

En mi opinión el Arduino Digisparck es una forma original de hacer un arduino. Pero debo decir que la diferencia de precio entre esta placa y un arduino nano o micro, no justifica su compra. Es difícil su programación eléctrica, debido a que tienes que conectar la placa para programarla. Solo se justifica la compra por lo diminuto de su tamaño, y la posibilidad de incorporar la placa en lugares donde no entraría los otros modelos.

Saludos.
Juan Galaz


Bibliografía:
https://www.luisllamas.es/programar-digispark-con-el-ide-de-arduino/
https://digistump.com/wiki/digispark/tutorials/basics
https://digistump.com/wiki/digispark/tutorials/connecting
http://janiserdmanis.org/blog/arduino-and-digispark
https://sunupradana.info/tkr/2017/07/

jueves, 21 de febrero de 2019

Arduino - Luces de navidad - Luces intermitentes


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: