Saludos cordiales de nuevo.
Quería comentar un problema que veo en la tira de leds que tengo y que no se como solucionar.
El proyecto es para la iluminación de una acuario simulando el amanecer, el medio día, el atardecer y el anochecer.
Ya tengo el 90% del programa hecho y solo estoy ajustando los brillos y tonos de rgb, lo ultimo que me queda serán los horarios de cada comando.
el problema reside en el primer led que cuando empieza mi programa que parpadea siempre que tiene que estar encendido.
Mis componentes son:
Para el proyecto estoy usando el Arduino UNO.
Para controlar o referencia de hora el modulo de reloj DS3231 conectado a los pines SDA y SCL (primero los puse junto a mi lcd pero por si fuera esto lo he cambiado a estos pines).
Una pantalla lcd (16,2)
Y una tira de pixels de 8 uds.
el codigo es larguiiisimo, voy a poner solo hasta el loop a ver si el fallo esta en esta zona.
//Hay un problema, el primer led de la tira parpadea a ritmo de los segundos.
#include <Wire.h>
//libreria para comunicación
#include <RTClib.h>
//Libreria para el reloj.
#include <LiquidCrystal_I2C.h>
//Libreria para la pantalla lcd
#include <Adafruit_NeoPixel.h>
//Libreria para la tira de led
RTC_DS1307 rtc;
//llamada al elemento.
LiquidCrystal_I2C lcd (0x26, 2, 1, 0, 4, 5, 6, 7);
//llamada a la pantalla lcd con su nueva direccion, siempre esta.
Adafruit_NeoPixel tira = Adafruit_NeoPixel(8, 2, NEO_GRB + NEO_KHZ800);
//llamada a la tira= tira 8=cantidad de leds 2= pin conectado los otros
//(NEO_GRB + NEO_KHZ800) dos no se modifican nunca solo para modelos mas antiguos.
String daysOfTheWeek[7] = {"Dom", "Lun", "Mar", "Mie", "Jue", "Vie", "Sab"};
//Muestra el día de la semana
//String monthName[12] = {"Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"};
//es para poner el año per aun no se como se hace.
void setup() {
lcd.setBacklightPin(3, POSITIVE);
//para el lcd I2c.
lcd.setBacklight(HIGH);
//le dice al lcd que encienda la luz.
lcd.begin(16, 2);
//16 filas 2 columnas.
tira.begin();
//?
tira.show();
//enciende la tira.
if (! rtc.begin()) {
lcd.println("Modulo RTC no encontrado !");
while (1);
}
//Todo esto es para que si arduino no encuentra el rtc te muestre el mensaje en pantalla.
//rtc.adjust(DateTime(__DATE__, __TIME__));
//La fila de arriba es para que el rtc coja la hora del ordenador la fecha y la hora,
//solo se ejecutara 1 vez puesto que DS3231 tiene pila y conserva memoria.
delay(500); //Retardo.
} //Del void setup
void loop() {
char buffer[20];
//char =comando, buffer=cadena de caracteres (inventado), 20= limite de caracteres
//que tiene el lcd esto sirve para cambiar la hora a 00/00/0000
//tira.setBrightness(20);
//valor de brillo OJO valores entre 0 minimo y 255 MAXIMO
tira.setPixelColor(0, 0, 0, 0);
//Configura la tira = posicion, R,G,B.
tira.show();
//Enciende tira.
DateTime fecha = rtc.now();
lcd.setCursor(0,0);
lcd.print(daysOfTheWeek[fecha.dayOfTheWeek()]);
lcd.setCursor(5, 0);
sprintf (buffer, "%02d/%02d/%4d", fecha.day(), fecha.month(), fecha.year());
lcd.print(buffer);
lcd.setCursor(5,1);
sprintf(buffer, "%02d:%02d:%02d", fecha.hour(), fecha.minute(), fecha.second());
lcd.print(buffer);
delay(1000);
lo he copiado justo hasta la programacion de brillo, horas, pixels y todo esto pero es mas o menos asi:
if (fecha.hour() == 13 && fecha.minute() == 20) {
for (int i = 0; i < 8; i++) {
tira.setBrightness(100);
tira.setPixelColor(i, 0, 23, 42);
//rojo, verde, azul, ANOCHECER
tira.show();
}
}
Vereis comentarios pero son para mi.
Gracias y saludos