Buenos días compañeros.
Tengo un problema con una tabla de 7 elementos definidos en la linea siguiente:
const int destinos = 7; //Número de destinos
char horario[destinos][6] = {"12:20","12:21","12:22","12:23","12:24","12:25","12:26"};
Es una tabla de horas y mi intención es cambiar el contenido de la misma por valores leídos
del sensor RTC sumando 15 a los minutos.
La función generaHorario() es la encargada de hacerlo pero cuando llega a la linea para actualizar
los valores de la tabla, esta no cambia.
alguien me puede decir donde he metido la pata? Porque seguro que es un problema que reside
entre el respaldo de la silla y el borde de la mesa.
Muchas gracias de antemano a todos.
Solo esta preparado para que funcione en setup(), en el codigo completo se hacen llamadas a la funcion generahorario() desde el Loop, pero por claridad he decidido hacer la llamada solo desde setup para que salga una sola vez.
Os pego el código:
#include "RTClib.h" // libreria ADAFRUIT para DS3231
RTC_DS3231 rtc;
const int destinos = 7; //Número de destinos
char horario[destinos][6] = {"12:20","12:21","12:22","12:23","12:24","12:25","12:26"}; // [6]
void setup() {
// Comprobamos si tenemos el RTC conectado
Serial.begin(115200);
if (! rtc.begin()) {
Serial.println("No hay un módulo RTC");
while (1);}
rtc.adjust(DateTime(F(DATE), F(TIME)));
Serial.println("------------------------------------------");
Serial.println("SACAMOS LOS VALORES ORIGINALES DE LA TABLA");
Serial.println("------------------------------------------");
for(int horasalida=0;horasalida<destinos;horasalida++){
Serial.println(horario[horasalida]);
}
Serial.println("-------------------------------------------------");
Serial.println("VALORES CALCULADOS POR LA FUNCION generahorario()");
generaHorario();
Serial.println("-------------------------------------------------");
Serial.println("---------------------------------");
Serial.println("MOSTRAMOS LOS VALORES MODIFICADOS");
Serial.println("---------------------------------");
for(int horasalida=0;horasalida<destinos;horasalida++){
Serial.println(horario[horasalida]);
}
}
//// Bucle principal del programa
void loop() {
}
//// Gerera tabla de horarios sumando 15min a los minutos.
void generaHorario(){
// Leemos la Hora del RTC
DateTime now = rtc.now();
int HH, MM;
String horas, minutos;
String horaCambiada, cambiadaHora;
char variable[destinos];
HH = (now.hour());
if(HH<10)horas = ("0" + String(HH));
MM = (now.minute());
if(MM<10) minutos = ("0" + String(MM));
for(int newhora=0;newhora<destinos;newhora++){
MM = (MM + 15);
if(MM>59){
MM = MM % 60;
HH = HH + 1;
}
HH = HH % 24;
horas = String(HH);
minutos = String(MM);
if(HH<10)horas = ("0" + String(HH));
if(MM<10) minutos = ("0" + String(MM));
cambiadaHora = horas + ":" + minutos ; //Carga el String con la hora
cambiadaHora.toCharArray(variable,destinos);
horario[newhora][6] = {variable};
Serial.println("horario[" + String(newhora) + "] = " + variable);
}
}