Buenas, retomo por donde lo dejé en su momento, es decir, con el programa que me proporciono Surbyte;
#include <TimeLib.h>
#include <Adafruit_NeoPixel.h>
#include <string.h>
#define pixel_pin 6 //Pin al que he conectado la tira de leds
#define pixel_count 25// numero de leds usados
Adafruit_NeoPixel strip = Adafruit_NeoPixel (25, 6, NEO_GRB + NEO_KHZ800); //declaracion necesaria no se muy bien porque :s
int time = 1000; //Tiempo para los segundos
#define TIME_HEADER "T" // Header tag for serial time sync message
#define TIME_REQUEST 7 // ASCII bell character requests a time sync message
void hora_to_binario(byte hora, byte min, byte seg);
void digitalClockDisplay();
void setup() {
Serial.begin(115200);
while (!Serial) ; // wait until Arduino Serial Monitor opens
// Ajustar al hora manualmente y luego comentarlo siempre y cuando no se apague el arduino.
setTime(00, 00, 00, 17, 04, 2018);
if(timeStatus()!= timeSet)
Serial.println("Unable to sync Time");
else
Serial.println("System time Set");
strip.begin();//necesarios para poder comenzar no se muy bien por que.
strip.show();//muestra la anterior linea.
strip.setPixelColor(0,255,255,255);//para comenzar con los leds en blanco, primer digito representa el nº del led y las siguientes cifras el color en R G y B
strip.setPixelColor(1,255,255,255);
strip.setPixelColor(2,255,255,255);
strip.setPixelColor(3,255,255,255);
strip.setPixelColor(5,255,255,255);
strip.setPixelColor(6,255,255,255);
strip.setPixelColor(7,255,255,255);
strip.setPixelColor(9,255,255,255);
strip.setPixelColor(10,255,255,255);
strip.setPixelColor(11,255,255,255);
strip.setPixelColor(12,255,255,255);
strip.setPixelColor(14,255,255,255);
strip.setPixelColor(15,255,255,255);
strip.setPixelColor(16,255,255,255);
strip.setPixelColor(18,255,255,255);
strip.setPixelColor(19,255,255,255);
strip.setPixelColor(20,255,255,255);
strip.setPixelColor(21,255,255,255);
strip.setPixelColor(23,255,255,255);
strip.setPixelColor(24,255,255,255);
strip.show();
}
void loop() {
if (timeStatus() == timeSet) {
digitalClockDisplay();
}
delay(1000);
}
void digitalClockDisplay(){
// digital clock display of the time
char buffer[40];
sprintf(buffer, "%02d:%02d:%02d", hour(), minute(), second());
Serial.println(buffer);
hora_to_binario(hour(), minute(), second());
}
time_t requestSync() {
Serial.write(TIME_REQUEST);
return 0; // the time will be sent later in response to serial mesg
}
void hora_to_binario(byte hora, byte min, byte seg) {
unsigned long tmp = (unsigned long) (hora/10)<<20UL |
(unsigned long) (hora%10)<<16UL |
(unsigned long) (min/10)<<12UL |
(unsigned long) (min%10)<<8UL |
(unsigned long) (seg/10)<<4UL |
(unsigned long) (seg%10);
unsigned long z;
byte cont = 0;
for (z = 8388608; z > 0UL; z >>= 1UL) {
Serial.print(((tmp & z) == z)? '1' : '0');
if ((tmp & z) == z)
strip.setPixelColor(cont,100,0,0); // 1
else
strip.setPixelColor(cont,255,255,255); // 0
cont++;
}
Serial.println(" ");
strip.show();
}
Exactamente la parte del codigo que deseo modificar es el siguiente;
for (z = 8388608; z > 0UL; z >>= 1UL) {
Serial.print(((tmp & z) == z)? '1' : '0');
if ((tmp & z) == z)
strip.setPixelColor(cont,100,0,0); // 1
else
strip.setPixelColor(cont,255,255,255); // 0
cont++;
}
Con esta parte del código Surbyte me configuró para que todos los leds sean rojos, ahora bien, deseo cambiar para que las horas tomen un color, los minutos otro color y los segundos otro color, pero no se si será posible con una simple modificación o habría que realizar grandes cambios.
PD: como dije en mis posts anteriores soy totalmente novato y aunque se identificar las partes del programa soy incapaz de hacer una modificación sin que el programa deje de funcionar por completo u.u"
Gracias de antemano a cualquier ayuda o sugerencia!