Reloj de pared RGB animado
Componentes y suministros
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Herramientas y máquinas necesarias
| ||||
|
Acerca de este proyecto
Si recuerdas, presentamos nuestros proyectos de diseño de relojes como INFINITY MIRROR CLOCK y 7-SEGMENT DIGITAL CLOCK en secciones anteriores. Ahora aquí estamos de nuevo con un reloj diferente, especial y bastante hermoso.
Sin duda te encantará este reloj de pared. Para este proyecto, volvimos a utilizar un LED RGB. ¡Y una impresora 3D es muy importante, por supuesto! Diseñamos y producimos algunas de las piezas necesarias para nuestro RELOJ DE PARED nuevamente. Y no es solo un reloj, también contiene diferentes ANIMACIONES. También puede utilizar el reloj como animación si lo desea.
¿Cómo controlas este reloj y animaciones, preguntas? No te preocupes. Lo desarrollamos en una aplicación muy simple para ti. Puede descargar el enlace.
Arduino es indispensable. Usamos Arduino Nano para ahorrar espacio. Nuestro proyecto RGB WALL CLOCK, que tiene un pequeño circuito electrónico, no le defraudará. No queremos emocionarte más, ¡así que te invitamos a ver nuestro video a continuación!
Código
- Código Arduino Nano
Arduino Nano Code Arduino
Los códigos de tiempo y animación están en los archivos#include#include #ifdef __AVR__ #include # endif # define PIN 6 # define PIN2 7 # define NUMPIXELS 60DS3231 rtc (SDA, SCL); Tiempo t; int hr; int mnt; int sc; char data; char color_select; int h_red_deger =255; int h_green_deger =0; int h_blue_deger =0; int m_red_deger =0; int m_green_deger =255; int m_deger_blue =0; int s_red_deger =255; int s_green_deger =255; int s_blue_deger =0; Adafruit_NeoPixel píxeles =Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); Ada_Nel_Grb + NEO_KHZ800) (Ada_Nel_Fruta2Pixel_Pixel2, Adafruit_NeoPixel, píxeles2 =Adafruit_NeoPixel (60, PIN, NEO_GRB + NEO_KHZ800); Adafruit_NeoPixel strip2 =Adafruit_NeoPixel (12, PIN2, NEO_GRB + NEO_KHZ800); int delayval =10; configuración vacía () {Serial.begin (9600); rtc.begin (); # if definido (__AVR_ATtiny85__) if (F_CPU ==16000000) clock_prescale_set (clock_div_1); # endif // Fin del código especial de la baratija pixels.begin (); // Esto inicializa la biblioteca NeoPixel. pixels2.begin (); strip.begin (); strip.show (); strip2.begin (); strip2.show (); //} bucle vacío () {while (Serial.available ()> 0) // balant kuruluyken {retraso (10); char c =Serial.read (); datos =c; si (datos =='m') {datos =''; t =rtc.getTime (); hr =t.hora; mnt =t.min; sc =t.sec; while (datos! ='m') {datos =Serial.read (); si (datos =='+') {hr ++; } si (datos =='-') {hr--; } for (int i =0; i <12; i ++) {pixels2.setPixelColor (i, pixels2.Color (0,255,10));} pixels2.show (); if (hr> =12) {hr =hr-12;} if (hr <0) {hr =hr + 12;} pixels2.setPixelColor (hr, pixels2.Color (255,0,0)); pixels2.show (); retraso (100); pixels2.setPixelColor (hr, pixels2.Color (0,0,0)); pixels2.show (); retraso (100); } rtc.setTime (hr, mnt, sc); si (datos =='m') {datos =''; t =rtc.getTime (); hr =t.hora; mnt =t.min; sc =t.sec; while (datos! ='m') {datos =Serial.read (); si (datos =='+') {mnt ++; if (mnt ==60) {mnt =0;}} if (datos =='-') {if (mnt ==0) {mnt =60;} mnt--; } para (int k =0; k <60; k ++) {pixels.setPixelColor (k, pixels.Color (0,0,0));} for (int k =0; k <60; k ++) {píxeles. setPixelColor (k, pixels.Color (25,25,255)); k =k + 4;} pixels.setPixelColor (mnt, pixels.Color (0,250,0)); pixels.show (); retraso (100); pixels.setPixelColor (mnt, pixels.Color (0,0,0)); pixels.show (); retraso (100); }} rtc.setTime (hr, mnt, sc); datos =''; } if (data =='H') {color_select =data; } if (data =='M') {color_select =data; } if (data =='S') {color_select =data; } si (datos =='A') {datos =''; colorWipe (tira.Color (255, 0, 0), 50); // Red colorWipe (strip.Color (0, 255, 0), 50); // Verde colorWipe (strip.Color (0, 0, 255), 50); // Azul // colorWipe (strip.Color (0, 0, 0, 255), 50); // White RGBW // Envía una persecución de píxeles de teatro en ... theaterChase (strip.Color (127, 127, 127), 50); // White theatreChase (strip.Color (127, 0, 0), 50); // Red theatreChase (strip.Color (0, 0, 127), 50); // Arco iris azul (20); rainbowCycle (20); theaterChaseRainbow (50); } if (data =='r' &&color_select =='H') {h_red_deger =Serial.parseInt (); píxeles2.setPixelColor (hr, píxeles2.Color (h_deger_rojo, h_deger_verde, h_deger_azul)); pixels2.show (); } if (data =='g' &&color_select =='H') {h_green_deger =Serial.parseInt (); píxeles2.setPixelColor (hr, píxeles2.Color (h_deger_rojo, h_deger_verde, h_deger_azul)); pixels2.show (); } if (data =='b' &&color_select =='H') {h_blue_deger =Serial.parseInt (); píxeles2.setPixelColor (hr, píxeles2.Color (h_deger_rojo, h_deger_verde, h_deger_azul)); pixels2.show (); } if (data =='r' &&color_select =='M') {m_red_deger =Serial.parseInt (); pixels.setPixelColor (mnt, pixels.Color (m_red_deger, m_green_deger, m_blue_deger)); pixels.show (); } if (data =='g' &&color_select =='M') {m_green_deger =Serial.parseInt (); pixels.setPixelColor (mnt, pixels.Color (m_red_deger, m_green_deger, m_blue_deger)); pixels.show (); } if (data =='b' &&color_select =='M') {m_blue_deger =Serial.parseInt (); pixels.setPixelColor (mnt, pixels.Color (m_red_deger, m_green_deger, m_blue_deger)); pixels.show (); } if (data =='r' &&color_select =='S') {s_red_deger =Serial.parseInt (); pixels.setPixelColor (sc, pixels.Color (s_red_deger, s_green_deger, s_blue_deger)); pixels.show (); } if (data =='g' &&color_select =='S') {s_green_deger =Serial.parseInt (); pixels.setPixelColor (sc, pixels.Color (s_red_deger, s_green_deger, s_blue_deger)); pixels.show (); } if (data =='b' &&color_select =='S') {s_blue_deger =Serial.parseInt (); pixels.setPixelColor (sc, pixels.Color (s_red_deger, s_green_deger, s_blue_deger)); pixels.show (); }} t =rtc.getTime (); hr =t.hora; mnt =t.min; sc =t.sec; pixels.setPixelColor (sc, pixels.Color (s_red_deger, s_green_deger, s_blue_deger)); pixels.setPixelColor (mnt, pixels.Color (m_red_deger, m_green_deger, m_blue_deger)); pixels.show (); for (int i =0; i <12; i ++) {if (i ==hr) {i ++;} pixels2.setPixelColor (i, pixels2.Color (0,255,0));} pixels2.show (); if (hr> =12) {hr =hr-12;} pixels2.setPixelColor (hr, pixels2.Color (h_deger_red, h_deger_green, h_blue_deger)); pixels2.show (); retraso (10); pixels.setPixelColor (sc, pixels.Color (0,0,0)); for (int k =0; k <60; k ++) {pixels.setPixelColor (k, pixels.Color (0,0,0));} for (int k =0; k <60; k ++) {pixels.setPixelColor (k, píxeles.Color (25,25,255)); k =k + 4;} píxeles.setPixelColor (mnt, píxeles.Color (0,0,0)); pixels.show (); } void colorWipe (uint32_t c, uint8_t wait) {for (uint16_t i =0; i Esquemas
controlando desde tu teléfono clockconnect__Ieit1qA91l.apk
Proceso de manufactura