Buenas, soy novato en arduino y estoy realizando un reloj binario con leds RGB, el proyecto consiste en programar una linea de leds con una entrada digital, alimentación 5V y GND.
Para ello estoy usando la librería adafruit_neopixel y aunque el reloj me realiza la secuencia de forma correcta cuando llega a 23:59:59 debería de detenerse en 24:00:00 pero sin embargo continua contando, hice funciones para corregir varios problemas que me fueron surgiendo como el que se saltase el 0 cuando pasaba de 9 a 10 y que cuando llegase al primer minuto si apareciese el 0, no se si me explico de forma correcta, igualmente dejo por aqui el codigo que aviso es bastante tocho porque aun no tengo mucha idea solo llevo 3 dias pero he procurado explicarme lo mejor posible y he recalcado el error con letra mayuscula o donde pienso que debe encontrarse
Gracias por la ayuda que me podais dar.
#include <Adafruit_NeoPixel.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
void setup()
{
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.begin();
strip.show();
}
void loop()
{
//SECONDS; Aqui es donde he ordenado todas las funciones creadas mas abajo
milsegundos();
segundos();
//MINUTES
milminutos();
minutos();
//HOURS
milhora();
horas();
strip.begin();
strip.show();
}
void milsegundos(){
strip.setPixelColor(0,255,255,255);//0000--->He colocado la configuracion en binaria para cada led, y para que realice el cambio por segundo como se observa en cada linea el valor que toma
strip.setPixelColor(1,255,255,255);
strip.setPixelColor(2,255,255,255);
strip.setPixelColor(3,255,255,255);
strip.show();
delay(time);
strip.setPixelColor(0,100,0,0);//0001
strip.setPixelColor(1,255,255,255);
strip.setPixelColor(2,255,255,255);
strip.setPixelColor(3,255,255,255);
strip.show();
delay(time);
strip.setPixelColor(0,255,255,255);//0010
strip.setPixelColor(1,100,0,0);
strip.setPixelColor(2,255,255,255);
strip.setPixelColor(3,255,255,255);
strip.show();
delay(time);
strip.setPixelColor(0,100,0,0);//0011
strip.setPixelColor(1,100,0,0);
strip.setPixelColor(2,255,255,255);
strip.setPixelColor(3,255,255,255);
strip.show();
delay(time);
strip.setPixelColor(0,255,255,255);//0100
strip.setPixelColor(1,255,255,255);
strip.setPixelColor(2,100,0,0);
strip.setPixelColor(3,255,255,255);
strip.show();
delay(time);
strip.setPixelColor(0,100,0,0);//0101
strip.setPixelColor(1,255,255,255);
strip.setPixelColor(2,100,0,0);
strip.setPixelColor(3,255,255,255);
strip.show();
delay(time);
strip.setPixelColor(0,255,255,255);//0110
strip.setPixelColor(1,100,0,0);
strip.setPixelColor(2,100,0,0);
strip.setPixelColor(3,255,255,255);
strip.show();
delay(time);
strip.setPixelColor(0,100,0,0);//0111
strip.setPixelColor(1,100,0,0);
strip.setPixelColor(2,100,0,0);
strip.setPixelColor(3,255,255,255);
strip.show();
delay(time);
strip.setPixelColor(0,255,255,255);//1000
strip.setPixelColor(1,255,255,255);
strip.setPixelColor(2,255,255,255);
strip.setPixelColor(3,100,0,0);
strip.show();
delay(time);
strip.setPixelColor(0,100,0,0);//1001
strip.setPixelColor(1,255,255,255);
strip.setPixelColor(2,255,255,255);
strip.setPixelColor(3,100,0,0);
strip.show();
delay(time);
}
void segundos()
{
strip.setPixelColor(5,100,0,0);//001--> este digito representaria si por ejemplo fuesen 36 segundos el digito 3 siendo
strip.setPixelColor(6,255,255,255);//desde 0 a 5 y llamando entre cada cambio a que realice la funcion anterior
strip.setPixelColor(7,255,255,255);
strip.show();
milsegundos();
strip.setPixelColor(5,255,255,255);//010
strip.setPixelColor(6,100,0,0);
strip.setPixelColor(7,255,255,255);
strip.show();
milsegundos();
strip.setPixelColor(5,100,0,0);//011
strip.setPixelColor(6,100,0,0);
strip.setPixelColor(7,255,255,255);
strip.show();
milsegundos();
strip.setPixelColor(5,255,255,255);//100
strip.setPixelColor(6,255,255,255);
strip.setPixelColor(7,100,0,0);
strip.show();
milsegundos();
strip.setPixelColor(5,100,0,0);//101
strip.setPixelColor(6,255,255,255);
strip.setPixelColor(7,100,0,0);
strip.show();
milsegundos();
}