[SOLUCIONADO] En programa falla 1 led de neopixel

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

Imposible analizar ese código incompleto, pero por lo pronto quita el delay(1000).

lo subo completo KIKE?

estoy en pruebas aun y esta medio barrado

Los programas siempre se deben subir completos. Lo explica claramente las normas del foro, nosotros no podemos entender lo que ocurre si no vemos la totalidad del programa.
Que tu digas que esta al 90% es algo que sabes tu, pero para evaluarlo debemos entender como inicializas variables, que librerías usas por eso es importante que junto a la librería pongas un comentario con la dirección de la librería o si la bajaste con el gestor de librerías.

Se entiende?

La segunda parte, entero no puedo ponerlo, excede de 900caracteres.

//Amanece 8:00h
// if (fecha.hour() == 12 && fecha.minute() == 45) {
 // for (int i = 0; i < 1; i++) {
 // tira.setBrightness(25);
 // tira.setPixelColor(i, 42, 18, 0);        
 //  tira.show();
 // }
 // }

  //Amanece 8:30h
// if (fecha.hour() == 12 && fecha.minute() == 46) {
//  for (int i = 0; i < 2; i++) {
//  tira.setBrightness(25);
//  tira.setPixelColor(i, 42, 18, 0);        
//   tira.show();
//  }
 // }

   //Amanece 9:00h
 //if (fecha.hour() == 12 && fecha.minute() == 47) {
 // for (int i = 0; i < 3; i++) {
 // tira.setBrightness(50);
 // tira.setPixelColor(i, 85, 37, 0);        
 //  tira.show();
//  }
//  }

   //Amanece 9:30h
// if (fecha.hour() == 12 && fecha.minute() == 48) {
 // for (int i = 0; i < 4; i++) {
 // tira.setBrightness(50);
 // tira.setPixelColor(i, 85, 37, 0);        
//   tira.show();
//  }
//  }


   //Amanece 10:00h
 //if (fecha.hour() == 12 && fecha.minute() == 47) {
  //for (int i = 0; i < 5; i++) {
  //tira.setBrightness(75);
  //tira.setPixelColor(i, 130, 55, 0);        
  //   tira.show();
  //}
  //}


   //Amanece 10:30h
 //if (fecha.hour() == 12 && fecha.minute() == 48) {
  //for (int i = 0; i < 6; i++) {
  //tira.setBrightness(75);
  //tira.setPixelColor(i, 130, 55, 0);        
     //tira.show();
  //}
  //}

   
  //Amanece 11:00h
 //if (fecha.hour() == 12 && fecha.minute() == 49) {
  //for (int i = 0; i < 7; i++) {
  //tira.setBrightness(100);
  //tira.setPixelColor(i, 255, 110, 0);        
   //tira.show();
  ///}
  ////}

  //_11:30h AMANECE 100%_______________________________________
 //if (fecha.hour() == 12 && fecha.minute() == 50) {
  //for (int i = 0; i < 8; i++) {
  //tira.setBrightness(100);
  ///tira.setPixelColor(i, 255, 110, 0);        
   ///tira.show();
  //}
  //}



  //MEDIO DÍA 12:00h    
//if (fecha.hour() == 12 && fecha.minute() == 51) {
//  for (int i = 0; i < 1; i++) {
//  tira.setBrightness(100);
//  tira.setPixelColor(i, 42, 42, 42);
//  tira.show();
// 
  ///}
  ///}


  //MEDIO DÍA 12:30h    
//if (fecha.hour() == 12 && fecha.minute() == 52) {
//  for (int i = 0; i < 2; i++) {
//  tira.setBrightness(100);
//  tira.setPixelColor(i, 42, 42, 42);
//  tira.show();
 //
//  }
  //}

    //MEDIO DÍA 13:00h   
//if (fecha.hour() == 12 && fecha.minute() == 53) {
//  for (int i = 0; i < 3; i++) {
//  tira.setBrightness(175);
//  tira.setPixelColor(i, 85, 85, 85);
///  tira.show();
  //}
  //}


   //MEDIO DÍA 13:30h   
//if (fecha.hour() == 12 && fecha.minute() == 54) {
  //for (int i = 0; i < 4; i++) {
//  tira.setBrightness(175);
//  tira.setPixelColor(i, 85, 85, 85);
//  tira.show();
//  }
///  }


   //MEDIO DÍA 14:00h   
//if (fecha.hour() == 12 && fecha.minute() == 55) {
//  for (int i = 0; i < 5; i++) {
//  tira.setBrightness(210);
//  tira.setPixelColor(i, 127, 127, 127);
//  tira.show();
  //}
  //}


  //MEDIO DÍA 14:30h   
//if (fecha.hour() == 12 && fecha.minute() == 56) {
//  for (int i = 0; i < 6; i++) {
  //tira.setBrightness(210);
  //tira.setPixelColor(i, 127, 127, 127);
  //tira.show();
  //}
  //}

  //MEDIO DÍA 15:00h
//if (fecha.hour() == 12 && fecha.minute() == 57) {
//  for (int i = 0; i < 7; i++) {
//  tira.setBrightness(255);
//  tira.setPixelColor(i, 255, 255, 255);
///  tira.show();
  //}
  //}
  
  //_15:30hMEDIO DÍA 100%_______________________________________________________
  
//if (fecha.hour() == 12 && fecha.minute() == 58) {
///  for (int i = 0; i < 8; i++) {
  //tira.setBrightness(255);
  //tira.setPixelColor(i, 255, 255, 255);
  //tira.show();
  //}
  //}

  //Anochece 16:00h  
//if (fecha.hour() == 12 && fecha.minute() == 59) {
//  for (int i = 0; i < 1; i++) {
  //tira.setBrightness(255);
  //tira.setPixelColor(i, 0, 140, 255);
  //tira.show();
  //}
  //}


  //Anochece 16:30h
//if (fecha.hour() == 13 && fecha.minute() == 00) {
//  for (int i = 0; i < 2; i++) {
//  tira.setBrightness(255);
//  tira.setPixelColor(i, 0, 140, 255);
//  //rojo, verde, azul, ANOCHECER  
//  tira.show();
//  }
//  }


  //Anochece 17:00h
//if (fecha.hour() == 13 && fecha.minute() == 1) {
//  for (int i = 0; i < 3; i++) {
//  tira.setBrightness(210);
//  tira.setPixelColor(i, 0, 69, 127);
//  //rojo, verde, azul, ANOCHECER  
//  tira.show();
//  }
//  }
  

  //Anochece 17:30h
//if (fecha.hour() == 13 && fecha.minute() == 2) {
//  for (int i = 0; i < 4; i++) {
//  tira.setBrightness(210);
//  tira.setPixelColor(i, 0, 69, 127);
  ////rojo, verde, azul, ANOCHECER  
 // tira.show();
  //}
  //}


  //Anochece 18:00h
//if (fecha.hour() == 13 && fecha.minute() == 3) {
//  for (int i = 0; i < 5; i++) {
//  tira.setBrightness(175);
//  tira.setPixelColor(i, 0, 46, 85);
//  //rojo, verde, azul, ANOCHECER  
//  tira.show();
////  }
  //}

  
  //Anochece 18:30h
//if (fecha.hour() == 13 && fecha.minute() == 4) {
//  for (int i = 0; i < 6; i++) {
//  tira.setBrightness(175);
//  tira.setPixelColor(i, 0, 46, 85);
//  //rojo, verde, azul, ANOCHECER  
//  tira.show();
//  }
//  }

  //Anochece 19:00h
if (fecha.hour() == 17 && fecha.minute() == 0) {
  for (int i = 0; i < 7; i++) {
  tira.setBrightness(100);
  tira.setPixelColor(i, 0, 23, 42);
  tira.show();
  }
}

//_19:30hANOCHECE 100%___________________________________________________

if (fecha.hour() == 17 && fecha.minute() == 1) {
  for (int i = 0; i < 8; i++) {
  tira.setBrightness(100);
  tira.setPixelColor(i, 0, 23, 42);
  tira.show();
  }
  }









//desde aqui hay que apagar los leds 1 a 1 por lo tanto hay que copiar la ultioma linea bajando el brillo pero con el mismo color que el ultimo comando
//Algo asi:

//if (fecha.hour() == 19 && fecha.minute() == 00) {
//for (int i = 0; i < 7; i--) {                              Bajar el led 1 a 1 
// tira.setBrightness(100);                                  linea  abajar el brillo
// tira.setPixelColor(i, 0, 23, 42);                         este se queda como esta
// tira.clear();                                              se apaga?? probar
//}                                                           ver video




  //Apagado 20:00h
if (fecha.hour() == 17 && fecha.minute() == 2) {
  for (int i = 0; i < 7; i--) {
  tira.setBrightness(75);
  tira.setPixelColor(i, 0, 23, 42);  
  tira.show();
  }
  }

  //Apagado 20:30h
if (fecha.hour() == 17 && fecha.minute() == 3) {
  for (int i = 0; i < 6; i--) {
  tira.setBrightness(75);
  tira.setPixelColor(i, 0, 23, 42);  
  tira.show(); 
  }
  }

  //Apagado 21:00h
if (fecha.hour() == 17 && fecha.minute() == 4) {
  for (int i = 5; i > 0; i--) {
  tira.setBrightness(75);
  tira.setPixelColor(i, 0, 23, 42);
  tira.show();
  }
  }

  //Apagado 21:30h
if (fecha.hour() == 17 && fecha.minute() == 5) {
  for (int i = 5; i > 0; i--) {
  tira.setBrightness(50);
  tira.setPixelColor(i, 0, 23, 42);
  tira.show();
  }
  }

  //Apagado 22:00h
if (fecha.hour() == 13 && fecha.minute() == 42) {
  for (int i = 3; i > 0; i--) {
  tira.setBrightness(50);
  tira.setPixelColor(i, 0, 23, 42);
  tira.show();
  }
  }
  

  //Apagado 22:30h
if (fecha.hour() == 13 && fecha.minute() == 43) {
  for (int i = 2; i > 0; i--) {
  tira.setBrightness(25);
  tira.setPixelColor(i, 0, 23, 42); 
  tira.show();
  }
  }

   //Apagado 23:00h
if (fecha.hour() == 13 && fecha.minute() == 44) {
  for (int i = 1; i > 0; i--) {
  tira.setBrightness(25);
  tira.setPixelColor(i, 0, 23, 42);
  tira.clear(); 
  }
  }
  tira.show();
   //_23:30h APAGADO 100%_____________________________________________________

if (fecha.hour() == 13 && fecha.minute() == 45) {
  //Hora de Apagado    
  tira.clear(); 
}

}         // Del loop

libreria:

#include <Wire.h>                                                   
//libreria para comunicación: IDE
#include <RTClib.h>
//Libreria para el reloj: IDE
#include <LiquidCrystal_I2C.h>
//Libreria para la pantalla lcd de: 
 https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/

#include <Adafruit_NeoPixel.h>
//Libreria para la tira de led: IDE

Chicos lo siento no puedo subir el codigo entero en un post, ni en dos veces ni entero. tengo que postear en varias veces.

Acepto instrucciones, gracias

Súbelo como adjunto, si el código supera 9k lo subes como adjunto.

#include <Wire.h>                                                   
//libreria para comunicación: IDE
#include <RTClib.h>
//Libreria para el reloj: IDE
#include <LiquidCrystal_I2C.h>
//Libreria para la pantalla lcd  de:   https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/
#include <Adafruit_NeoPixel.h>
//Libreria para la tira de led: IDE   

RTC_DS1307 rtc;
LiquidCrystal_I2C lcd (0x26, 2, 1, 0, 4, 5, 6, 7);
Adafruit_NeoPixel tira = Adafruit_NeoPixel(8, 2, NEO_GRB + NEO_KHZ800);
String daysOfTheWeek[7] = {"Dom", "Lun", "Mar", "Mie", "Jue", "Vie", "Sab"};

//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);
  lcd.setBacklight(HIGH);
  lcd.begin(16, 2);
  tira.begin();
  tira.show();
  
  if (! rtc.begin()) {
    lcd.println("Modulo RTC no encontrado !");
    while (1);
  }

//rtc.adjust(DateTime(__DATE__, __TIME__));
//  delay(500);   
}   //Del Setup




void loop() {
   char buffer[20];   
   tira.setPixelColor(0, 0, 0, 0);
   tira.show();




  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);

  

  //¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡EMPIEZA EL JUEGO!!!!!!!!!!!!!!!!!!!

  //Amanece 8:00h
if (fecha.hour() == 19 && fecha.minute() == 30) {
  for (int i = 0; i < 1; i++) {
  tira.setBrightness(25);
  tira.setPixelColor(i, 42, 18, 0);        
  tira.show();
  }
}

  //Amanece 8:30h
if (fecha.hour() == 19 && fecha.minute() == 31) {
  for (int i = 0; i < 2; i++) {
  tira.setBrightness(25);
  tira.setPixelColor(i, 42, 18, 0);        
  tira.show();
  }
}

  //Amanece 9:00h
if (fecha.hour() == 19 && fecha.minute() == 32) {
  for (int i = 0; i < 3; i++) {
  tira.setBrightness(50);
  tira.setPixelColor(i, 85, 37, 0);        
  tira.show();
  }
}

   //Amanece 9:30h
if (fecha.hour() == 19 && fecha.minute() == 33) {
  for (int i = 0; i < 4; i++) {
  tira.setBrightness(50);
  tira.setPixelColor(i, 85, 37, 0);        
  tira.show();
  }
}


  //Amanece 10:00h
if (fecha.hour() == 19 && fecha.minute() == 34) {
  for (int i = 0; i < 5; i++) {
  tira.setBrightness(75);
  tira.setPixelColor(i, 130, 55, 0);        
  tira.show();
  }
}


  //Amanece 10:30h
if (fecha.hour() == 19 && fecha.minute() == 35) {
  for (int i = 0; i < 6; i++) {
  tira.setBrightness(75);
  tira.setPixelColor(i, 130, 55, 0);        
  tira.show();
 }
}

   
  //Amanece 11:00h
if (fecha.hour() == 19 && fecha.minute() == 36) {
  for (int i = 0; i < 7; i++) {
  tira.setBrightness(100);
  tira.setPixelColor(i, 255, 110, 0);        
  tira.show();
 }
}

  //Ammanece 11:30h
if (fecha.hour() == 19 && fecha.minute() == 37) {
  for (int i = 0; i < 8; i++) {
  tira.setBrightness(100);
  tira.setPixelColor(i, 255, 110, 0);        
  tira.show();
  }
}    //       11:30h AMANECE 100%


  // Medio día 12:00h    
if (fecha.hour() == 19 && fecha.minute() == 38) {
  for (int i = 0; i < 1; i++) {
  tira.setBrightness(100);
  tira.setPixelColor(i, 42, 42, 42);
  tira.show();
  }
}


  // Medio día 12:30h    
if (fecha.hour() == 19 && fecha.minute() == 39) {
  for (int i = 0; i < 2; i++) {
  tira.setBrightness(100);
  tira.setPixelColor(i, 42, 42, 42);
  tira.show();
  }
}

  // Medio día 13:00h   
if (fecha.hour() == 19 && fecha.minute() == 40) {
  for (int i = 0; i < 3; i++) {
  tira.setBrightness(175);
  tira.setPixelColor(i, 85, 85, 85);
  tira.show();
  }
}


  // Medio día 13:30h   
if (fecha.hour() == 19 && fecha.minute() == 41) {
  for (int i = 0; i < 4; i++) {
  tira.setBrightness(175);
  tira.setPixelColor(i, 85, 85, 85);
  tira.show();
  }
}


  // Medio día 14:00h   
if (fecha.hour() == 19 && fecha.minute() == 42) {
  for (int i = 0; i < 5; i++) {
  tira.setBrightness(210);
  tira.setPixelColor(i, 127, 127, 127);
  tira.show();
  }
}


  // Medio día 14:30h   
if (fecha.hour() == 19 && fecha.minute() == 43) {
  for (int i = 0; i < 6; i++) {
  tira.setBrightness(210);
  tira.setPixelColor(i, 127, 127, 127);
  tira.show();
  }
}

  // Medio día 15:00h
if (fecha.hour() == 19 && fecha.minute() == 44) {
  for (int i = 0; i < 7; i++) {
  tira.setBrightness(255);
  tira.setPixelColor(i, 255, 255, 255);
  tira.show();
  }
}
  
  
  // Medio día 15:30h.
if (fecha.hour() == 19 && fecha.minute() == 45) {
  for (int i = 0; i < 8; i++) {
  tira.setBrightness(255);
  tira.setPixelColor(i, 255, 255, 255);
  tira.show();
  }
}   //        15:30h MEDIO DÍA 100%

  // Anochece 16:00h  
if (fecha.hour() == 19 && fecha.minute() == 46) {
  for (int i = 0; i < 1; i++) {
  tira.setBrightness(255);
  tira.setPixelColor(i, 0, 140, 255);
  tira.show();
  }
}


  // Anochece 16:30h
if (fecha.hour() == 19 && fecha.minute() == 47) {
  for (int i = 0; i < 2; i++) {
  tira.setBrightness(255);
  tira.setPixelColor(i, 0, 140, 255);
  tira.show();
  }
}


  // Anochece 17:00h
if (fecha.hour() == 19 && fecha.minute() == 48) {
  for (int i = 0; i < 3; i++) {
  tira.setBrightness(210);
  tira.setPixelColor(i, 0, 69, 127);  
  tira.show();
  }
}
  

  // Anochece 17:30h
if (fecha.hour() == 19 && fecha.minute() == 49) {
  for (int i = 0; i < 4; i++) {
  tira.setBrightness(210);
  tira.setPixelColor(i, 0, 69, 127);
  tira.show();
  }
}


  // Anochece 18:00h
if (fecha.hour() == 19 && fecha.minute() == 50) {
  for (int i = 0; i < 5; i++) {
  tira.setBrightness(175);
  tira.setPixelColor(i, 0, 46, 85); 
  tira.show();
  }
}

  
  // Anochece 18:30h
if (fecha.hour() == 19 && fecha.minute() == 51) {
  for (int i = 0; i < 6; i++) {
  tira.setBrightness(175);
  tira.setPixelColor(i, 0, 46, 85);  
  tira.show();
  }
}

  // Anochece 19:00h
if (fecha.hour() == 19 && fecha.minute() == 52) {
  for (int i = 0; i < 7; i++) {
  tira.setBrightness(100);
  tira.setPixelColor(i, 0, 23, 42);
  tira.show();
  }
}


  // Anochece 19:30h
if (fecha.hour() == 19 && fecha.minute() == 53) {
  for (int i = 0; i < 8; i++) {
  tira.setBrightness(100);
  tira.setPixelColor(i, 0, 23, 42);
  tira.show();
  }
} //        19:30hANOCHECE 100%

  // Apagado 20:00h
if (fecha.hour() == 19 && fecha.minute() == 54) {
  for (int i = 0; i < 1; i++) {
  tira.setBrightness(75);
  tira.setPixelColor(i, 0, 0, 0);  
  tira.show();  
  }
}


  // Apagado 20:30h
if (fecha.hour() == 19 && fecha.minute() == 55) {
  for (int i = 0; i < 2; i++) {
  tira.setBrightness(75);
  tira.setPixelColor(i, 0,  0, 0);
  tira.show();  
  }
}


  // Apagado 21:00h
if (fecha.hour() == 19 && fecha.minute() == 56) {
  for (int i = 0; i < 3; i++) {
  tira.setBrightness(75);
  tira.setPixelColor(i, 0, 0, 0);
  tira.show();
  }
}
  

  // Apagado 21:30h
if (fecha.hour() == 19 && fecha.minute() == 57) {
  for (int i = 0; i < 4; i++) {
  tira.setBrightness(50);
  tira.setPixelColor(i, 0, 0, 0);
  tira.show();
  }
}
  

  // Apagado 22:00h
if (fecha.hour() == 19 && fecha.minute() == 58) {
  for (int i = 0; i < 5; i++) {
  tira.setBrightness(50);
  tira.setPixelColor(i, 0, 0, 0);
  tira.show();
  }
}
  

  // Apagado 22:30h
if (fecha.hour() == 19 && fecha.minute() == 59) {
  for (int i = 0; i < 6; i++) {
  tira.setBrightness(25);
  tira.setPixelColor(i, 0, 0, 0);
  tira.show();
  }
}

   // Apagado 23:00h
if (fecha.hour() == 20 && fecha.minute() == 0) {
  for (int i = 0; i < 7; i++) {
  tira.setBrightness(25);
  tira.setPixelColor(i, 0, 0, 0);
  tira.show();
  }
}

  
   // Apagado 23:30h
if (fecha.hour() == 20 && fecha.minute() == 1) {  
  tira.clear(); 
  } //        23:30h APAGADO 100%
}         // Del loop

Ahora parece que si, lo que he hecho es quitar todos mis comentarios, como los necesito para seguir aprendiendo, he hecho otro archivo sin ellos. Bueno iré aprendiendo poco a poco a trabajar con este foro.

_Sí, ya tengo el 90% lo he probado ya sobre el acuario para ver el efecto y moola mucho, las conexiones son sencillas y el programa aunque rebuscado creo que también lo es, antes de instalar quitaré la pantalla lcd y que sea mas compacto.

Gracias.

Continúa el problema en ese código que has posteado sin comentarios?

Intenta ser mas específico para poder ir al punto del problema.

Si. El problema, como comente al principio, es que el primer led parpadea, a veces a ritmo de los segundos y otras mas rápido.

He quitado la pantalla lcd y sigue haciendo lo mismo y la tira de led no es porque hago un programa para que se enciendan todos uno por uno y no parpadea.

Yo creo que hay algo entre el ds3231 y la tira, el RTC actualmente esta conectado a los pines del controlador que están por encima del pin 13 (recuerda mi controlador es el arduino UNO R3) los sda y scl, esta aquí porque como la pantalla lcd tiene el adaptador I2C y van a los pines A4 y A5 pensé que podía ser por esto, como ves en el programa ya he dado otra dirección al I2C por si hubiera algún conflicto.

No se que mas explicarte, pregunta e intentare ser mas especifico.

Gracias

Estuve viendo tu programa y ahora me doy cuenta de lo que has hecho.
Sin aún corregir tu error vamos a cambiar algo pero ayúdame porque no tengo tu hardware

Define esto

typedef struct {
  byte hora, min;
  byte ciclo;
  byte brillo;
  byte pixel1, pixel2, pixel3;
} Config;

Config config[20] = { {19,30, 1, 25,42,18,0},
                              {19,31, 2, 25,42,18,0},



                              {19,59, 6, 25, 0, 0,0},    // Apagado 22:30h
                              {20, 0,  7, 25, 0, 0,0}};    // Apagado 23:00h

Entonces luego simplemente lo usas asi

#include <Wire.h>                                                   
//libreria para comunicación: IDE
#include <RTClib.h>
//Libreria para el reloj: IDE
#include <LiquidCrystal_I2C.h>
//Libreria para la pantalla lcd  de:   https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/
#include <Adafruit_NeoPixel.h>
//Libreria para la tira de led: IDE   

RTC_DS1307 rtc;
LiquidCrystal_I2C lcd (0x26, 2, 1, 0, 4, 5, 6, 7);
Adafruit_NeoPixel tira = Adafruit_NeoPixel(8, 2, NEO_GRB + NEO_KHZ800);
String daysOfTheWeek[7] = {"Dom", "Lun", "Mar", "Mie", "Jue", "Vie", "Sab"};

//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.

typedef struct {
  byte hora, min;
  byte brillo;
  byte pixel1, pixel2, pixel3;
} Config;

Config config[20] = { {19, 30,  1, 25, 42, 18,  0},
                      {19, 31,  2, 25, 42, 18,  0},
                      {19, 32,  3, 50, 85, 37,  0},
                      {19, 33,  4, 50, 85, 37,  0},
                      {19, 34,  5, 75,130, 55,  0},
                      {19, 35,  6, 75,130, 55,  0},
                      {19, 36,  7,100,255,110,  0},
                      {19, 37,  8,100,255,110,  0},
                      {19, 38,  1,100, 42, 42, 42},
                      {19, 39,  2,100, 42, 42, 42},
                      {19, 40,  3,175, 85, 85, 85},
                      // faltan valores y sde deben verificar todos
                      {20,  0,  7, 25,  0 , 0 , 0}
                    };

void setup() {
  lcd.setBacklightPin(3, POSITIVE);
  lcd.setBacklight(HIGH);
  lcd.begin(16, 2);
  tira.begin();
  tira.show();
 
  if (! rtc.begin()) {
      lcd.println("Modulo RTC no encontrado !");
      while (1);
  }

//rtc.adjust(DateTime(__DATE__, __TIME__));
//  delay(500);   
}   //Del Setup

void loop() {
  char buffer[20];   
  tira.setPixelColor(0, 0, 0, 0);
  tira.show();

  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);

  for (byte i=desde; i<MAX; i++) {
       enciendoLed(i);
  }

void enciendoLed(byte tmp) {
  // Amanece 8:00h
  if (fecha.hour() == config[tmp].hora && fecha.minute() == config[tmp].min) {
      for (int i = 0; i < config[tmp].ciclo; i++) {
          tira.setBrightness(config[tmp].brillo);
          tira.setPixelColor(i, config[tmp].pixel1, config[tmp].pixel2, config[tmp].pixel3);       
          tira.show();
      }
  }  
}

NOTA: no he verificado el código asi que por favor si da errores, los conversamos pero haz el intento de hacerlo funcionar.
Es mucho mas fácil de enteder asi, al menos para mi.

Ahora si en este código tu LED parapadea, podemos analizarlo mejor.

ok, dame unos días, que no puedo ahora, gracias

Tengo muchos dias de confinamiento, de modo que tomate el tiempo que necesites.

Buenos días veamos.
Si, hay un error sale:

too many initializers for 'Config'

y aparece marcada la ultima linea del config config, en la del corchete

Config config[20] = { {19, 30,  1, 25, 42, 18,  0},
                      {19, 31,  2, 25, 42, 18,  0},
                      {19, 32,  3, 50, 85, 37,  0},
                      {19, 33,  4, 50, 85, 37,  0},
                      {19, 34,  5, 75,130, 55,  0},
                      {19, 35,  6, 75,130, 55,  0},
                      {19, 36,  7,100,255,110,  0},
                      {19, 37,  8,100,255,110,  0},
                      {19, 38,  1,100, 42, 42, 42},
                      {19, 39,  2,100, 42, 42, 42},
                      {19, 40,  3,175, 85, 85, 85},
                      // faltan valores y se deben verificar todos
                      {20,  0,  7, 25,  0 , 0 , 0}
 };

creía que tras el corchete no podía haber un punto y coma pero lo quito y sigue saliendo, parece como si hubiera demasiadas ordenes o algo así, no? por el mensaje de error.

otra pregunta el código lo ejecuto tal cual esta, no? quiero decir, abro una ventana y lo añado todo como nuevo

o lo añado al mio?

si es así, tengo que quitar algo?

las 19, 31 a 40, son horas y minutos, no? por poner la hora en la que estoy para probar.

Gracias.

Una pregunta que no viene al caso pero es sobre estos foros, a veces entro para buscar cosas y cuando le doy al buscador me sale el de windows, la pagina no tiene un buscador de conversaciones donde pueda buscar otras cosas??

Gracias de nuevo

a ver.. yo copié algunas horas pero te dejo a ti la tarea de hacerlo debidamente.
La estructura dice con claridad como esta armado todo

typedef struct {
  byte hora, min;
  byte ciclo;
  byte brillo;
  byte pixel1, pixel2, pixel3;
} Config;

Era facil de deducir.
{hora, min, ciclo, brillo, pixel1, pixel2, pixel3}

Ahí solo hay 11 elementos asi que lo mejor que puedes hacer es o lo completas con lo que falta desde

19:40 a 20:00

o le pones simplemente

Config config[] = // lo que sigue

ok, gracias y el error que me sale?

No has entendido mi explicación si me preguntas eso.

Deberías completar con todas las horas faltantes pero si no yo lo empecé y me aburrí de hacerlo porque es tu trabajo no el mío

Config config[] = { {19, 30,  1, 25, 42, 18,  0},
                      {19, 31,  2, 25, 42, 18,  0},
                      {19, 32,  3, 50, 85, 37,  0},
                      {19, 33,  4, 50, 85, 37,  0},
                      {19, 34,  5, 75,130, 55,  0},
                      {19, 35,  6, 75,130, 55,  0},
                      {19, 36,  7,100,255,110,  0},
                      {19, 37,  8,100,255,110,  0},
                      {19, 38,  1,100, 42, 42, 42},
                      {19, 39,  2,100, 42, 42, 42},
                      {19, 40,  3,175, 85, 85, 85},
                                                                         // <== Aca debes completar los valores que faltan                      
                      {20,  0,  7, 25,  0 , 0 , 0}
 };

Claro que de este modo no sabes cuantos elementos tienes.
Recuerda que se comienza contando desde 0.
El primer elemento es el 0 y asi subes..
Si tienes N elementos veras desde 0 a N-1
Ej: si tienes 20 elementos del vector tendras indices del 0 al 19.

Como tu tenías horarios desde 19:31 hasta 20:00 no se cuantos son pero casi 30 pueden llegar a ser.

no, lo siento o no te entiendo bien, o no te explicas para que lo entienda pero lo intento y me sale el mismo error

Config config[14] = { {8, 0,  1, 25, 42, 18,  0},
                      {8, 30,  2, 25, 42, 18,  0},
                      {9, 0,  3, 50, 85, 37,  0},
                      {9, 30,  4, 50, 85, 37,  0},
                      {10, 0,  5, 75,130, 55,  0},
                      {10, 30,  6, 75,130, 55,  0},
                      {11, 0,  7,100,255,110,  0},
                      {11, 30,  8,100,255,110,  0},
                      {17, 30,  1,100, 42, 42, 42},
                      {18, 0,  2,100, 42, 42, 42},
                      {18, 30,  3,175, 85, 85, 85},
                      {19, 0,  3,175, 85, 85, 85},
                      {22, 0,  3,175, 85, 85, 85},
                      {22, 30,  3,175, 85, 85, 85},
                      {23, 0,  3,175, 85, 85, 85},
                    };

Esto es lo que e hecho y me sigue saliendo el mismo error, por el comentario creo que te referias a cambiar estas lineas.

este es el codigo completo:

#include <Wire.h>                                                   
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_NeoPixel.h>
  
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd (0x26, 2, 1, 0, 4, 5, 6, 7);
Adafruit_NeoPixel tira = Adafruit_NeoPixel(8, 2, NEO_GRB + NEO_KHZ800);
String daysOfTheWeek[7] = {"Dom", "Lun", "Mar", "Mie", "Jue", "Vie", "Sab"};

typedef struct {
  byte hora, min;
  byte brillo;
  byte pixel1, pixel2, pixel3;
} Config;

Config config[20] = { {8, 0,  1, 25, 42, 18,  0},
                      {8, 30,  2, 25, 42, 18,  0},
                      {9, 0,  3, 50, 85, 37,  0},
                      {9, 30,  4, 50, 85, 37,  0},
                      {10, 0,  5, 75,130, 55,  0},
                      {10, 30,  6, 75,130, 55,  0},
                      {11, 0,  7,100,255,110,  0},
                      {11, 30,  8,100,255,110,  0},
                      {17, 30,  1,100, 42, 42, 42},
                      {18, 0,  2,100, 42, 42, 42},
                      {18, 30,  3,175, 85, 85, 85},
                      {19, 0,  3,175, 85, 85, 85},
                      {22, 0,  3,175, 85, 85, 85},
                      {22, 30,  3,175, 85, 85, 85},
                      {23, 0,  3,175, 85, 85, 85},
                    };




void setup() {
  lcd.setBacklightPin(3, POSITIVE);
  lcd.setBacklight(HIGH);
  lcd.begin(16, 2);
  tira.begin();
  tira.show();
  pinMode(rele1, OUTPUT); 
  pinMode(rele2, OUTPUT);
  if (! rtc.begin()) {
    lcd.println("Modulo RTC no encontrado !");
    while (1);
  }
rtc.adjust(DateTime(__DATE__, __TIME__));
 
}   




void loop() {
   char buffer[20];   
   tira.setPixelColor(0, 0, 0, 0);
   tira.show();


  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);

    for (byte i=desde; i<MAX; i++) {
       enciendoLed(i);
  }

if (fecha.hour() == 8 && fecha.minute() == 0){
  for (int i = 0; i < 2; i++) {
  tira.setBrightness(25);
  tira.setPixelColor(i, 255, 150, 0);        
  tira.show();
  }
}
  
if (fecha.hour() == 8 && fecha.minute() == 30){
  for (int i = 0; i < 4; i++) {
  tira.setBrightness(50);
  tira.setPixelColor(i, 255, 150, 0);        
  tira.show();
  }
}

if (fecha.hour() == 8 && fecha.minute() == 30){
  digitalWrite(rele1, HIGH);
}

if (fecha.hour() == 9 && fecha.minute() == 0){
  for (int i = 0; i < 6; i++) {
  tira.setBrightness(75);
  tira.setPixelColor(i, 255, 150, 0);        
  tira.show();
  }
}

if (fecha.hour() == 9 && fecha.minute() == 30){
  digitalWrite(rele2, HIGH);
}


if (fecha.hour() == 9 && fecha.minute() == 30){
  for (int i = 0; i < 8; i++) {
  tira.setBrightness(100);
  tira.setPixelColor(i, 255, 150, 0);        
  tira.show();
  }
}

if (fecha.hour() == 10 && fecha.minute() == 0){
  for (int i = 0; i < 2; i++) {
  tira.setBrightness(125);
  tira.setPixelColor(i, 255, 255, 255);        
  tira.show();
  }
}

if (fecha.hour() == 10 && fecha.minute() == 30){
  for (int i = 0; i < 4; i++) {
  tira.setBrightness(150);
  tira.setPixelColor(i, 255, 255, 255);        
  tira.show();
 }
}

if (fecha.hour() == 11 && fecha.minute() == 0){
  for (int i = 0; i < 6; i++) {
  tira.setBrightness(175);
  tira.setPixelColor(i, 255, 255, 255);        
  tira.show();
 }
}

if (fecha.hour() == 11 && fecha.minute() == 30){
  for (int i = 0; i < 8; i++) {
  tira.setBrightness(200);
  tira.setPixelColor(i, 255, 255, 255);        
  tira.show();
  }
}   
   
if (fecha.hour() == 12 && fecha.minute() == 0){
  for (int i = 0; i < 8; i++) {
  tira.setBrightness(255);
  tira.setPixelColor(i, 255, 255, 255);
  tira.show();
  }
}

if (fecha.hour() == 17 && fecha.minute() == 30){
  for (int i = 0; i < 2; i++) {
  tira.setBrightness(255);
  tira.setPixelColor(i, 0, 0, 255);
  tira.show();
  }
}

if (fecha.hour() == 18 && fecha.minute() == 0){
  for (int i = 0; i < 4; i++) {
  tira.setBrightness(255);
  tira.setPixelColor(i, 0, 0, 255); 
  tira.show();
  }
}

if (fecha.hour() == 18 && fecha.minute() == 30){
  for (int i = 0; i < 6; i++) {
  tira.setBrightness(255);
  tira.setPixelColor(i, 0, 0, 255);  
  tira.show();
  }
}

if (fecha.hour() == 19 && fecha.minute() == 0){
  for (int i = 0; i < 8; i++) {
  tira.setBrightness(255);
  tira.setPixelColor(i, 0, 0, 255);
  tira.show();
  }
}
  
if (fecha.hour() == 22 && fecha.minute() == 0){
  digitalWrite(rele1, LOW);
  digitalWrite(rele2, LOW);
}

if (fecha.hour() == 22 && fecha.minute() == 0){
  for (int i = 0; i < 2; i++) {
  tira.setBrightness(128);
  tira.setPixelColor(i, 0, 0, 0);
  tira.show();
  }
}
  
if (fecha.hour() == 22 && fecha.minute() == 30){
  for (int i = 0; i < 4; i++) {
  tira.setBrightness(85);
  tira.setPixelColor(i, 0, 0, 0);
  tira.show();
  }
}

if (fecha.hour() == 23 && fecha.minute() == 0){
  for (int i = 0; i < 6; i++) {
  tira.setBrightness(42);
  tira.setPixelColor(i, 0, 0, 0);
  tira.show();
  }
}
  
if (fecha.hour() == 23 && fecha.minute() == 30){ 
  tira.clear(); 
  } 
}

Mira tienes que entender que es mi primer proyecto y que hay veces que me comentas cosas que no entiendo, por los comentarios que haces parece que tengas poca paciencia y te entiendo porque tu seguramente lo tendras asimilado pero yo estoy empezando. No quiero que escribas por mi pero si tengo que modificar lo que ya me ha costado solo para que tu lo entiendas comprenderas que si a ti te cuesta entender a mi mas.

SAludos

No, sigue saliendo el error y el pixel parpadea