Lo primero, el código:
//PROGRAMA DEFINITIVO!!
//Pines con PWM:3,5,6,9,10,11
int i;
int a;
int apagado;
const int PWM1 = 3;
const int PWM2 = 5;
const int PWM3 = 6;
const int PWM4 = 9;
const int PWM5 = 10;
const int PWM6 = 11;
unsigned long tanterior = 0;
const long intervalo = 10;
int BRILLO = 0;
int fadeAmount = 1;
int estadoluzacuario;
int hora;
int minutos;
int segundos;
int hdes;
int mdes;
int sdes;
String msg1 = "El sistema de iluminación necesita 2 horas.";
String msg2 = "Una, que será la actual.";
String msg3 = "Y otra, que será la deseada para que se ilumine el acuario.";
String msg4 = "Empecemos con la actual.";
String msg5 = "Introduzca la hora (solo 2 cifras).";
String msg6 = "Ahora escriba los minutos.";
String msg7 = "Por último, escriba los segundos.";
String msg8 = "Hora exacta elegida:";
String msg9 = "Vamos con la hora deseada.";
String msg10 = "¿Hora?";
String msg11 = "¿Minuto?";
String msg12 = "¿Segundo?";
String msg13 = "Si quiere apagar el sistema de iluminación, escriba '0'.";
void setup(){
tanterior = millis();
for(i = 1; i<= 13; i++){
pinMode(i, OUTPUT);
}
Serial.begin(9600);
}
void loop(){
Serial.println(msg1);
delay(1500);
Serial.println(msg2);
delay(1500);
Serial.println(msg3);
delay(1500);
Serial.println(msg4);
delay(1500);
Serial.println(msg5);
while(Serial.available() == 0){
}
hora = Serial.parseInt();
Serial.println(msg6);
while(Serial.available() == 0){
}
minutos = Serial.parseInt();
Serial.println(msg7);
while(Serial.available() == 0){
}
segundos = Serial.parseInt();
int comienzo = millis();
Serial.println(msg8);
Serial.println(hora);
Serial.println(minutos);
Serial.println(segundos);
delay(1500);
Serial.println(msg9);
delay(1500);
Serial.println(msg10);
while(Serial.available() == 0){
}
hdes = Serial.parseInt();
Serial.println(msg11);
while(Serial.available() == 0){
}
mdes = Serial.parseInt();
Serial.println(msg12);
while(Serial.available() == 0){
}
sdes = Serial.parseInt();
Serial.println(msg8);
Serial.println(hdes);
Serial.println(mdes);
Serial.println(sdes);
while(((millis())-comienzo) < (((hdes-hora)*3600000)+((mdes-minutos)*60000)+((sdes-segundos)*1000))){
}
while(((millis())-comienzo) >= (((hdes-hora)*3600000)+((mdes-minutos)*60000)+((sdes-segundos)*1000))){
unsigned long currentMillis = millis();
if (currentMillis - tanterior >= intervalo)
{
tanterior = currentMillis; // save the last state
analogWrite(PWM1, BRILLO); // Set the BRILLO
analogWrite(PWM2, BRILLO);
analogWrite(PWM3, BRILLO);
analogWrite(PWM4, BRILLO);
analogWrite(PWM5, BRILLO);
analogWrite(PWM6, BRILLO);
BRILLO = BRILLO + fadeAmount; // change the BRILLO for next time through the loop
while(BRILLO == 255){
digitalWrite(PWM1, HIGH);
digitalWrite(PWM2, HIGH);
digitalWrite(PWM3, HIGH);
digitalWrite(PWM4, HIGH);
digitalWrite(PWM5, HIGH);
digitalWrite(PWM6, HIGH);
for(a = 1; a <= 13; a++){
digitalWrite(a, HIGH);
}
}
}
}
}
Lo sé, es una basura ineficiente y se podría haber hecho en 400 líneas menos, pero no soy programador y soy novato todavía. Simplemente quiero poner un mensaje que diga que si se quiere apagar el sistema, se escriba 0. El problema es que con mi fantástico while(BRILLO == 255) creo que no puedo hacerlo. Si a alguien se le ocurre algo (no hace falta que me lo ponga currado en código, con que me diga cómo lo debo hacer va de sobra). A ver si consigo terminarlo, me falta eso y se acabó