Van varias preguntas y no te hemos respondido ninguna.
al estar tantas horas, conectados los MOSFET seria conveniente instalarles a cada uno un disipador de aluminio ?
No importa el tiempo que este funcionando. Un dispositivo no necesita horas a menos que por programa tu lo fuerces a situaciones donde la disipación cambie. Como no tengo esa respuesta diré o supondré que siempre es igual. Tu ponlo a funcionar en luego de un par de minutos (solo por dar un tiempo de calentamiento) siente como esta el MOSFET. Caliente no significa que debas ponerle disipador. Ahora si lo tocas y no puedes sostener tus dedos entonces si conviene usar disipador.
Respuesta a post#19
if ( fecha.hour() == 2 && fecha.minute() == 0 ){ // si hora = ___ y minutos = ____ restablece valores de
evento_inicio = true; // variables de control en verdadero
evento_fin = true;
en esa consulta comparas la hora usando fecha.hour() con las 2 AM y los minutos con 0
El problema es que eso se ejectua MUCHAS VECES durante todo ese largo minuto. Pero si, dice que a las 2:00 se active evento_inicio y qeu evento_fin tmb o sea.. algo no esta bien.
Como no has puesto que hacen evento_inico que supongo debieran encender las luces y evento_fin debieran apagarlas, supongo que ha sido un error de código. La idea es que evento_inicio se ponga en true com esta y evento_fin este en la rutina de activación de las luces o de las tiras led y que luego de recibir la orden cambien evento_inicio = false.
Este código no esta bien porque esto se repite con cada ciclo asi que por mas que apagues los flags (evento_inicio o evento_fin) se reactivarán con cada ciclo.
Respueta a post#21
for (BRILLO = 0; BRILLO < 256; BRILLO++){ // bucle incrementa BRILLO
analogWrite(MOSFET, BRILLO); // PWM en pin 3 con valor de BRILLO
delay(25); // demora de 25 mseg.
}
Esto es un ciclo que va de 0 a 255 y no responde a lo que pides que es aumentar el brillo por hora. Primero debes definir cuanto brillo aumentará por hora. Porque tienes 24 horas y 256 niveles asi que ese es tu primer desafío. Luego no puedes usar un ciclo for sino un incremento dado por una variable de tiempo que tu determinarás. puede ser por minuto, cada 2 minutos o cada X segundos.
Lo que veo al final del post#22 es que estas cometiendo algunos errores de como encarar la cosa. Si pones todo en un ciclo el cambio será vertiginoso y eso no creo que sea la idea.
Veamos este último código
if ( fecha.hour() == 12 && fecha.minute() == 57 ){ // si hora = __ y minutos = __
if ( evento_inicio == true ){ // si evento_inicio es verdadero
for (BRILLO = 0; BRILLO < 256; BRILLO++){ // bucle incrementa BRILLO
analogWrite(TRIAC1, BRILLO); // PWM en pin 3 con valor de BRILLO
}
analogWrite(TRIAC1, HIGH); // activa modulo de triac con nivel alto <=== ESTA DE MAS
analogWrite(TRIAC2, LOW); // activa modulo de triac con nivel alto <=== ESTA DE MAS
evento_inicio = false; // carga valor falso en variable de control
} // para evitar ingresar mas de una vez
}
Si tienes un ciclo for para que luego dejas un comando como analogWrite(TRIAC1, HIGH);
analogWrite requiere un pin como TRIAC y un valor entre 0 y 255 no un true/false como HIGH o LOW. Asi que elimina esas dos líneas. Seria en todo caso
analogWrite(TRIAC1, 255);
analogWrite(TRIAC2, HIGH);
pero nunca analogWrite(TRIAC1, HIGH);
pero repito, es superfluo o al menos lo es para TRIAC1 porque ya lo dejaste en 255.
Dime si se entiende?