Un reloj de 15 LED RGB con Arduino base (3 / 5 paso)

Paso 3: Consideraciones de Software

No proporciono todo el bosquejo aquí porque, en primer lugar, fue desarrollado para el hardware de encargo particular y por lo tanto no funcionará con el dispositivo, y en segundo lugar, porque no hay ninguna ciencia de cohetes allí – el reloj RGB básico es bastante simple (no dude en hacernos cualquier pregunta si tiene problemas, aunque). Sin embargo, hay algunas consideraciones vale la pena mencionar.

1. hacer bien RGB

El reloj RGB muestra tiempo mezclando sólo colores básicos – rojos, verdes y azules. Teniendo en cuenta que cada color básico está impulsada por su propio canal de datos de la forma de programar esto parece bastante sencilla – sólo encienda rojos durante horas, luego verde y azul para el Acta correspondiente. Mezcla de colores se hará por LED ellos mismos. ¿Simple, correcto?

Mal!

Si bien esta solución parece excelente desde el punto de vista de programación no es que se consideran bueno si visual estética y consumo de energía. Un LED RGB es esencialmente tres LEDs en un solo paquete. Esto significa que si aparece rojo, se está trabajando sólo un LED. Si cambia a amarillo, se encienden dos LEDs, y con blanco los tres están brillando. Así, el amarillo es dos veces más brillante que cualquier color básico y blanco es tres veces más brillante. Esto realmente no se ve bien (y es una de las razones VHS modelo no debe usarse nunca con LEDs, pero eso es otra historia para un próximo artículo) y usa demasiada energía – de hecho, cuando los 15 LED blanco (5:30) el aparato consumirá 900mA e incluso no trabaja fuera de un puerto USB (500 mA).

La otra razón que vas a tener que 'elegir' los colores del hecho de que los LEDs no son calibrado de color y diferentes racimos puede variar ampliamente de la manera que ellos mismos colores de la salida. Es una buena idea hacer algunos calibración de color manualmente para obtener las tonalidades del color exacto que desea, incluso cuando se trata de 7 colores aparentemente simples.

De todos modos, es mejor encender cada LED individual con valores cuidadosamente preparados. En mi bosquejo que primero calcular qué colores deben ser sobre y escribir en una pequeña matriz de bytes (con tres bits más a la derecha utilizadas), y luego enviar los valores dispuestos para el LED en consecuencia. Estos son fragmentos de código:

Preparación de bytes:

para (k = 0;
k < 15; k ++) disp15 [k] = 0; claro todos bytes

para (k = 1; k < 6; k ++)

{

Si ((hour%6) >(k-1)) {disp15 [k-1] = B100; disp15 [k + 4] = B100; disp15 [k + 9] = B100;};

}

Si (minutos < 16) para (k = 0; k

otra cosa

Si (minutos < 31)

{para (k = 0; k < 16; k ++) disp15 [k] | = B010;

para (k = 0; k <(minute-15); k ++) disp15 [k] | = B001;}

otra cosa

Si (minutos < 46)

{para (k = 0; k < 16; k ++) disp15 [k] | = B001;

para (k=(minute-30); k < 15; k ++) disp15 [k] | = B010;}

otra (k=(minute-45); k < 15; k ++) disp15 [k] | = B001;

LED de encendido:

 for ( k=0; k<15; k++){ switch (disp15[k]) { case B000: setRGBpoint(k, 0, 0, 0); break; case B100: setRGBpoint(k, 3600, 0, 0); break; case B010: setRGBpoint(k, 0, 3000, 0); break; case B001: setRGBpoint(k, 0, 0, 3600); break; case B110: setRGBpoint(k, 1800, 1200, 0); break; case B011: setRGBpoint(k, 0, 2000, 1500); break; case B101: setRGBpoint(k, 1900, 0, 1700); break; case B111: setRGBpoint(k, 1200, 1000, 1000); break; } } 

2. el reloj

No utilice la librería Time.h. Mientras que puede obtener el tiempo del chip RTC externo, es mullido con cosas innecesarias: está convirtiendo tu Arduino en un reloj, comiendo recursos y memoria (aproximadamente 5 Kb de él de hecho!). Sólo obtener las funciones necesarias de ella y usar wire.h biblioteca solamente.

Estas son las funciones rescatadas que deberá:

 byte bcdToDec(byte val){ return ( (val/16*10) + (val%16) ); } 
 byte decToBcd(byte val) { return ((val/10*16) + (val%10)); } 
 void getTime () { Wire.beginTransmission(0x68); Wire.write(byte(0)); Wire.endTransmission(); Wire.requestFrom(0x68, 3); second = bcdToDec (Wire.read()); minute = bcdToDec (Wire.read()); hour = bcdToDec(Wire.read())%12; //12 hour time } 
 void setTime() { Wire.beginTransmission(0x68); Wire.write(byte(0)); Wire.write(decToBcd(second)); Wire.write(decToBcd(minute)); Wire.write(decToBcd(hour)); Wire.write(byte(0)); Wire.endTransmission(); } 

No olvide #include y Wire.begin(); en setup() y en segundo lugar, declarar variables minutos y horas.

3. un botón

Se recomienda agregar un botón al reloj RGB: puede ser útil para cambios de modo de configuración o visualización de reloj si tiene más de uno. En mi proyecto el botón se utiliza para el cambio de modos (pulsación corta), configuración (pulsación larga 1 segundo) y configuración de brillo (más prensa, 2 segundos). También hay una configuración de orientación (selección de qué lado del reloj es en la parte inferior): se enciende por dos pulsaciones cortas seguidos por uno largo. Para hacer materias más simple que puede considerar usar más de un botón.

Esto conduce a una cuestión de combinar la visualización de tiempo con esperando presiona un botón. Una vez más, la respuesta correcta programación (asignación de una interrupción para el botón) no es necesariamente correcta en nuestro caso. ¿Qué pasa si usted quiere leer algún sensor – por ejemplo, un fotoresistor – para cambiar el comportamiento del dispositivo? ¿Qué pasa si desea controlar el dispositivo con un control remoto IR?

Como esto no está estrictamente relacionado con el particular proyecto de reloj RGB simple de este instructable voy a ser breve. Las rutinas de visualización en mis proyectos no se coloca en a sí mismos: ellos sólo configura una pantalla y luego devolver el control al ciclo principal loop() que hace cosas como comprobación de botones o sensores o cualquier otra cosa, entonces lazos y llama otra vez la visualización. Yo uso un modeCounter variable global para realizar un seguimiento de la posición actual de la visualización para los modos de animación (básicamente es el mismo que for(,,,) pero sin el lazo contenido). Los detalles son realmente la materia para otro artículo, esperanza ayudará a este pequeño fragmento de código (y otra vez, no dude en preguntar).

Artículos Relacionados

Control LED RGB con arduino y procesamiento.

Control LED RGB con arduino y procesamiento.

Hoy te diré cómo controlar un LED RGB con ayuda del lenguaje Arduino y procesamiento. Este es mi primer instructable, déjeme por favor saber si pudiera mejorar algo y si tienes cualquier tipo de preguntas les dejan en la caja de comentario, me encant
Android controla LEDs RGB con Arduino

Android controla LEDs RGB con Arduino

Hai a todos en el post iam va a mostrar cómo controlar el LED RGB utilizando android con arduino y el módulo Bluetooth HC-05.He buscado en la web hay muchas técnicas para controlar el LED RGB. Pero este es el método que es muy simple y fácil.En este
Control de un Led RGB con Arduino y procesamiento

Control de un Led RGB con Arduino y procesamiento

este instructable (mi primer no menos) se muestra cómo controlar un RGB led usando procesamiento y arduino.La característica fundamental que el color se selecciona haciendo clic en una imagen, el valor RGB del pixel que usted haga clic en es procesad
Circuito de tira de LED RGB con Arduino

Circuito de tira de LED RGB con Arduino

Este Instructable cubre el montaje de un circuito capaz de ing de PWM (modulación de anchura de pulso) una tira de LED RGB 12v 9 y programación un Arduino para desplazarse a través de una gama de colores. Discutir cómo montar un transistor a un disip
Usando el LED RGB con Arduino

Usando el LED RGB con Arduino

Hola chicos este es mi primer instructivo y mostrará usted cómo controlar LEDs RGB (rojo verde y azul). su no tan difícil de hacer pero los materiales que necesitará son;-Una placa de Arduino-RGB LED-los cables de puente-Breadboard(optional)recomiend
LED Snowboard RGB con Arduino Uno R3

LED Snowboard RGB con Arduino Uno R3

Este instructable explica cómo controlar una tira de LED RGB con un Arduino. En este caso, la tira de LED se monta en una tabla de snowboard. RGB (rojo, verde, azul) LED tienen la capacidad de mostrar una variedad de colores basados en encender y apa
Color calibrar LEDs RGB con un Arduino

Color calibrar LEDs RGB con un Arduino

Más gente cree LED y al final de las relaciones de Arduino con un abrir y cerrar del bosquejo. Después de eso tienes que ir hacia motores, casas inteligentes y otras cosas 'serio'. Bueno, tal vez soy lento o tal vez es sólo que soy un artista gráfico
Reloj Led RGB con Bluetooth Smart

Reloj Led RGB con Bluetooth Smart

Este instructable muestra cómo utilizar un ciprés-BLE-Devkit para construir un reloj LED RGB.Necesita muy pocas cosas:Tira de RGB LED con 30 o 60 LEDs WS2812b.un tablero de PC del estilo de cuadrículaalgunos pins del jefe del perno y un poco de alamb
Control de un LED RGB con el módulo de Bluetooth HC-06 con Android OS(Arduino)

Control de un LED RGB con el módulo de Bluetooth HC-06 con Android OS(Arduino)

Este tutorial explicará el proceso de conectarse un Arduino con un módulo de Bluetooth HC-06 y controlar el color de un LED RGB mediante la aplicación de ArduDroid en el sistema operativo Android. Esta configuración es muy probable que también trabaj
Cubo de LED Rubik con Arduino

Cubo de LED Rubik con Arduino

En este instructable te voy a mostrar cómo pueden construir cubos de su propia LED Rubik. Este proyecto fue realizado para un curso introductorio de electrónica en el Pomona College. Grupos recibieron aproximadamente dos meses para completar un proye
Lámpara de LED RGB con USB de madera

Lámpara de LED RGB con USB de madera

Hice esta lámpara originalmente como un regalo de Navidad de último minuto (vale, dos días) para mi hermana. Quería una lámpara especial pero rápido para construir y esto es lo que me ocurrió con los materiales que tenían en mano ese día. Se trata de
48 x 8 desplazamiento matriz LED DISPLAY con ARDUINO controlador

48 x 8 desplazamiento matriz LED DISPLAY con ARDUINO controlador

un monocromo pantalla de matriz de puntos LED (solo color) se utiliza para mostrar los caracteres y símbolos que es interfaz con un microcontrolador. Este proyecto será deliberar sobre mostrando un mensaje de texto desplazable en una pantalla de matr
Ingeniería inversa: Bombilla de LED RGB con mando a distancia IR

Ingeniería inversa: Bombilla de LED RGB con mando a distancia IR

compramos 20 de estas bombillas LED RGB para una fiesta en el trabajo, pero estaba un poco decepcionado con las funciones de fundido de color que proporcionaban. Así que decidí tomar a un ingeniero inverso, aparte el protocolo de IR y ver si tenía má
Efectos de iluminación LED RGB con Abalorio de Adafruit

Efectos de iluminación LED RGB con Abalorio de Adafruit

Este instructable es para hacer efectos de luz programables usando un LED RGB (este es un LED que contiene elementos individuales rojo, verde y azul) y el bajo costo microcontrolador baratija de Adafruit. Estas luces pueden usadas y reutilizadas para