erik86
12-10-2013, 17:46
ho fatto questo programma per la gestione della plafoniera ma non riesco a creare una rampa in funzione al tempo che gli imposto per l'accensione dei led...aiuto
[CODICE]#include <ShiftLCD.h> //libreria shift register
#include <math.h> // libreria calcoli matematici
#include <swRTC.h> //libreria rtc
//pin 13/11 non utilizzabili senza shield RTC
//pin 3 non utilizzabile come uscita analogicam
#define sens A0 //sensore temperatura NTC 5Kohm
#define pulmenu A1 //scorrimento menù
#define pulset A2 //pulsante di conferma
#define pulpiu A3 //pulsante che incrementa il valore impostato
#define pulmeno A4 //pulsante che decrementa il valore impostato
#define ventole 3 //ventole di raffreddamento
#define led20 6 //led bianchi 20.000K°
#define led10 5 //led bianchi 10.000K°
#define ledrb 9 //led royal blu
#define leduv 10 //led uv
#define ledm 4 //led moom
ShiftLCD lcd(0,2,1); //lcd
swRTC rtc; //rtc
int spulmenu=0; //stato pulsante di scorrimento menù
int spulset=0; //stato pulsante di conferma
int contamenu=0; //contatore pagine menù
int spulpiu=0; //stato pulsante che incrementa il valore impostato
int spulmeno=0; //stato pulsante che decrementa il valore impostato
int hh=12; //valore di preset ore
int mm=0; //valore di preset minuti
int ss=(rtc.getSeconds()); //valore di preset secondi
int svtemp=15; //set della temperatura di comando ventole
int onhh20=13; //valore di on ore led bianchi 20.000K°
int onmm20=0; //valore di on minuti led bianchi 20.000K°
int onhh10=12; //valore di on ore led bianchi 10.000K°
int onmm10=1; //valore di on minuti led bianchi 10.000K°
int onhhrb=13; //valore di on ore led rb
int onmmrb=2; //valore di on minuti led rb
int onhhuv=13; //valore di on ore led uv
int onmmuv=3; //valore di on minuti led uv
int onhhm=13; //valore di on ore led moom
int onmmm=3; //valore di on minuti led moom
int offhh20=13; //valore di off ore led bianchi 20.000K°
int offmm20=4; //valore di off minuti led bianchi 20.000K°
int offhh10=13; //valore di off ore led bianchi 10.000K°
int offmm10=5; //valore di off minuti led bianchi 10.000K°
int offhhrb=13; //valore di off ore led rb
int offmmrb=6; //valore di off minuti led rb
int offhhuv=13; //valore di off ore led uv
int offmmuv=7; //valore di off minuti led uv
int offhhm=13; //valore di off ore led moom
int offmmm=8; //valore di off minuti led moom
int slum20=(slum20/2.54); //set luminostità led bianchi 20.000K°
int slum10=(slum10/2.54); //set luminostità led bianchi 10.000K°
int slumrb=(slumrb/2.54); //set luminostità led rb
int slumuv=(slumuv/2.54); //set luminostità led uv
int stimer10=1; //set tempo di accensione led bianchi 10.000K°
int stimer20=2; //set tempo di accensione led bianchi 20.000K°
int stimerrb=3; //set tempo di accensione led royal blu
int stimeruv=4; //set tempo di accensione led uv
int stimerm=5; //set tempo di accensione led moom
int lum20=0; // luminostità led bianchi 20.000K°
int lum10=0; // luminostità led bianchi 10.000K°
int lumrb=0; // luminostità led rb
int lumuv=0; // luminostità led uv
int lumm=0; // luminostità led moom
float val=0; //Variabile di comodo per il calcolo della temperatura in base al proprio NTC
float NTC=5000; //Valore dell'NTC utilizzato. 5000=5k
float vsens(int RawADC){
val=10000/NTC;
val=4.5*val;
val=NTC*val;
long resistenza;
float Temp; //per il calcolo della tempratura
resistenza=((1024 * val / RawADC) - val);
Temp = log(resistenza); //Salva Log(resistance)
Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));
Temp = Temp - 273.15; // Converte gradi Kelvin in Celsius
return Temp; //Ritorna la temperatura calcolata
}
byte gradi[8] = {B00111,B00101,B00111}; //simbolo gradi
void setup(){
lcd.begin(16,2);
rtc.setTime(hh,mm,ss);
rtc.stopRTC();
rtc.startRTC();
pinMode(ventole,OUTPUT);
pinMode(led20,OUTPUT);
pinMode(led10,OUTPUT);
pinMode(ledrb,OUTPUT);
pinMode(leduv,OUTPUT);
pinMode(ledm,OUTPUT);
}
void loop(){
delay(150); //ritardo risposta pulsanti
float temp;temp=vsens(analogRead(sens));temp = (temp * 9.0)/ 5.0 + 32.0; //calcolo della temperatura
if(temp>=svtemp){digitalWrite(ventole,HIGH);}else{digitalW rite(ventole,LOW);} //controllo ventole con la temperatura
rtc.getHours();rtc.getMinutes();rtc.getSeconds(); //orologio
spulmenu=analogRead(pulmenu);
spulset=analogRead(pulset);
spulpiu=analogRead(pulpiu);
spulmeno=analogRead(pulmeno);
//scorrimento menù
if((spulmenu>10)&&(contamenu==0)){contamenu=1;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==1)){contamenu=2;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==2)){contamenu=3;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==3)){contamenu=4;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==4)){contamenu=5;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==5)){contamenu=6;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==6)){contamenu=7;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==7)){contamenu=0;lcd.clear();
}}}}}}}}
//scorrimento sottomenù led 10000°K
if((spulset>10)&&(contamenu==1)){contamenu=11;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==11)){contamenu=12;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==12)){contamenu=13;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==13)){contamenu=14;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==14)){contamenu=15;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==15)){contamenu=11;lcd.clear();
}}}}}}
//scorrimento sottomenù led 20000°K
if((spulset>10)&&(contamenu==2)){contamenu=21;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==21)){contamenu=22;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==22)){contamenu=23;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==23)){contamenu=24;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==24)){contamenu=25;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==25)){contamenu=21;lcd.clear();
}}}}}}
//scorrimento sottomenù led royal blu
if((spulset>10)&&(contamenu==3)){contamenu=31;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==31)){contamenu=32;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==32)){contamenu=33;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==33)){contamenu=34;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==34)){contamenu=35;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==35)){contamenu=31;lcd.clear();
}}}}}}
//scorrimento sottomenù led uv
if((spulset>10)&&(contamenu==4)){contamenu=41;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==41)){contamenu=42;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==42)){contamenu=43;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==43)){contamenu=44;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==44)){contamenu=45;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==45)){contamenu=41;lcd.clear();
}}}}}}
//scorrimento sottomenù led moom
if((spulset>10)&&(contamenu==5)){contamenu=51;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==51)){contamenu=52;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==52)){contamenu=53;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==53)){contamenu=54;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==54)){contamenu=51;lcd.clear();
}}}}}
//scorrimento sottomenù ventole
if((spulset>10)&&(contamenu==6)){contamenu=61;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==61)){contamenu=62;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==62)){contamenu=61;lcd.clear();
}}}
//scorrimento sottomenù orario
if((spulset>10)&&(contamenu==7)){contamenu=71;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==71)){contamenu=72;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==72)){contamenu=71;lcd.clear();
}}}
//uscita menù
if((spulset>10)&&(contamenu==15)){contamenu=1;lcd.clear();
}else{if((spulset>10)&&(contamenu==25)){contamenu=2;lcd.clear();
}else{if((spulset>10)&&(contamenu==35)){contamenu=3;lcd.clear();
}else{if((spulset>10)&&(contamenu==45)){contamenu=4;lcd.clear();
}else{if((spulset>10)&&(contamenu==54)){contamenu=5;lcd.clear();
}else{if((spulset>10)&&(contamenu==62)){contamenu=6;lcd.clear();
}else{if((spulset>10)&&(contamenu==72)){contamenu=7;lcd.clear();
}}}}}}}
if((onhh10==rtc.getHours())&&(onmm10==rtc.getMinutes())){lum10++;}if(lum10>slum10){lum10=slum10;} //orario di on led bianchi 10.000K°
if((offhh10==rtc.getHours())&&(offmm10==rtc.getMinutes())){lum10--;}if(lum10<1){lum10=0;} //orario di off led bianchi 10.000K°
analogWrite(led10,lum10);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
switch(contamenu){
case 0: //pagina iniziale
lcd.setCursor(0, 0);
if (rtc.getHours()<10){lcd.print("0");}lcd.print(rtc.getHours(), DEC);
lcd.print(":");
if (rtc.getMinutes()<10){lcd.print("0");}lcd.print(rtc.getMinutes(), DEC);
lcd.print(":");
if (rtc.getSeconds()<10){lcd.print("0");}lcd.print(rtc.getSeconds(), DEC);
lcd.print(" ");
lcd.setCursor(12,0);lcd.print(temp,0.5);
lcd.setCursor(14,0);lcd.write(0);lcd.createChar(0, gradi);lcd.setCursor(15,0);lcd.print("C");
lcd.setCursor(3,1);
lcd.print("POWER:");lcd.print("");lcd.print("% ");
break;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 1: //pagina led 10000K
lcd.setCursor(1,0);
lcd.print("SET LED 10000K");
break;
case 11: //pagina ora di accensone led 10000K
lcd.setCursor(5,0);
lcd.print("SET ON");
lcd.setCursor(4,1);
if (onhh10<10){lcd.print("0");}lcd.print(onhh10);lcd.print(":");
if (onmm10<10){lcd.print("0");}lcd.print(onmm10);lcd.print(":");
lcd.print("00");
if(spulpiu>10){onmm10++;if(onmm10>59){onmm10=0;onhh10++;}if(onhh10>23){onhh10=0;}} //incrementa ore/minuti
if(spulmeno>10){onmm10--;if(onmm10<0){onmm10=59;onhh10--;}if(onhh10<0){onhh10=23;}} //decrementa ore/minuti
break;
case 12: //pagina ora di spegnimento led 10000K
lcd.setCursor(5,0);
lcd.print("SET OFF");
lcd.setCursor(4,1);
if (offhh10<10){lcd.print("0");}lcd.print(offhh10);lcd.print(":");
if (offmm10<10){lcd.print("0");}lcd.print(offmm10);lcd.print(":");
lcd.print("00");
if(spulpiu>10){offmm10++;if(offmm10>59){offmm10=0;offhh10++;}if(offhh10>23){offhh10=0;}} //incrementa ore/minuti
if(spulmeno>10){offmm10--;if(offmm10<0){offmm10=59;offhh10--;}if(offhh10<0){offhh10=23;}} //decrementa ore/minuti
break;
case 13: //pagina intensità led 10000K
lcd.setCursor(2,0);
lcd.print("SET INTENSITY");
lcd.setCursor(7,1);
if(spulpiu>10){slum10++;if(slum10>99){slum10=100;}} //aumenta intensità led 10000K
if(spulmeno>10){slum10--;if(slum10<1){slum10=0;}} //diminuisci intensità led 10000K
if (slum10<10){lcd.print("0");}lcd.print(slum10);lcd.print("% ");
break;
case 14: //pagina tempo accensione/spegnimento led 10000K
lcd.setCursor(2,0);
lcd.print("SET TIMER ON");
lcd.setCursor(5,1);
if(spulpiu>10){stimer10++;if(stimer10>1440){stimer10=0;}} //incrementa minuti
if(spulmeno>10){stimer10--;if(stimer10<0){stimer10=1440;}} //decrementa minuti
if (stimer10<10){lcd.print("0");}lcd.print(stimer10);lcd.print("min. ");
break;
case 15: //uscita menù
lcd.setCursor(6,0);
lcd.print("EXIT");
break;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 2: //pagina led 20000K
lcd.setCursor(1,0);
lcd.print("SET LED 20000K");
break;
case 21: //pagina ora di accensone led 20000K
lcd.setCursor(5,0);
lcd.print("SET ON");
lcd.setCursor(4,1);
if (onhh20<10){lcd.print("0");}lcd.print(onhh20);lcd.print(":");
if (onmm20<10){lcd.print("0");}lcd.print(onmm20);lcd.print(":");
lcd.print("00");
if(spulpiu>10){onmm20++;if(onmm20>59){onmm20=0;onhh20++;}if(onhh20>23){onhh20=0;}} //incrementa ore/minuti
if(spulmeno>10){onmm20--;if(onmm20<0){onmm20=59;onhh20--;}if(onhh20<0){onhh20=23;}} //decrementa ore/minuti
break;
case 22: //pagina ora di spegnimento led 20000K
lcd.setCursor(5,0);
lcd.print("SET OFF");
lcd.setCursor(4,1);
if (offhh20<10){lcd.print("0");}lcd.print(offhh20);lcd.print(":");
if (offmm20<10){lcd.print("0");}lcd.print(offmm20);lcd.print(":");
lcd.print("00");
if(spulpiu>10){offmm20++;if(offmm20>59){offmm20=0;offhh20++;}if(offhh20>23){offhh20=0;}} //incrementa ore/minuti
if(spulmeno>10){offmm20--;if(offmm20<0){offmm20=59;offhh20--;}if(offhh20<0){offhh20=23;}} //decrementa ore/minuti
break;
case 23: //pagina intensità led 20000K
lcd.setCursor(2,0);
lcd.print("SET INTENSITY");
lcd.setCursor(7,1);
if(spulpiu>10){slum20++;if(slum20>99){slum20=100;}} //aumenta intensità led 20000K
if(spulmeno>10){slum20--;if(slum20<1){slum20=0;}} //diminuisci intensità led 20000K
if (slum20<10){lcd.print("0");}lcd.print(slum20);lcd.print("% ");
break;
case 24: //pagina tempo accensione/spegnimento led 20000K
lcd.setCursor(2,0);
lcd.print("SET TIMER ON");
lcd.setCursor(5,1);
if(spulpiu>10){stimer20++;if(stimer20>1440){stimer20=0;}} //incrementa minuti
if(spulmeno>10){stimer20--;if(stimer20<0){stimer20=1440;}} //decrementa minuti
if (stimer20<10){lcd.print("0");}lcd.print(stimer20);lcd.print("min. ");
break;
case 25: //uscita menù
lcd.setCursor(6,0);
lcd.print("EXIT");
break;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 3: //pagina led royal blue
lcd.setCursor(1,0);
lcd.print("SET ROYAL BLUE");
break;
case 31: //pagina ora di accensone led royal blue
lcd.setCursor(5,0);
lcd.print("SET ON");
lcd.setCursor(4,1);
if (onhhrb<10){lcd.print("0");}lcd.print(onhhrb);lcd.print(":");
if (onmmrb<10){lcd.print("0");}lcd.print(onmmrb);lcd.print(":");
lcd.print("00");
if(spulpiu>10){onmmrb++;if(onmmrb>59){onmmrb=0;onhhrb++;}if(onhhrb>23){onhhrb=0;}} //incrementa ore/minuti
if(spulmeno>10){onmmrb--;if(onmmrb<0){onmmrb=59;onhhrb--;}if(onhhrb<0){onhhrb=23;}} //decrementa ore/minuti
break;
case 32: //pagina ora di spegnimento led royal blue
lcd.setCursor(5,0);
lcd.print("SET OFF");
lcd.setCursor(4,1);
if (offhhrb<10){lcd.print("0");}lcd.print(offhhrb);lcd.print(":");
if (offmmrb<10){lcd.print("0");}lcd.print(offmmrb);lcd.print(":");
lcd.print("00");
if(spulpiu>10){offmmrb++;if(offmmrb>59){offmmrb=0;offhhrb++;}if(offhhrb>23){offhhrb=0;}} //incrementa ore/minuti
if(spulmeno>10){offmmrb--;if(offmmrb<0){offmmrb=59;offhhrb--;}if(offhhrb<0){offhhrb=23;}} //decrementa ore/minuti
break;
case 33: //pagina intensità led royal blue
lcd.setCursor(2,0);
lcd.print("SET INTENSITY");
lcd.setCursor(7,1);
if(spulpiu>10){slumrb++;if(slumrb>99){slumrb=100;}} //aumenta intensità led royal blue
if(spulmeno>10){slumrb--;if(slumrb<1){slumrb=0;}} //diminuisci intensità led royal blue
if (slumrb<10){lcd.print("0");}lcd.print(slumrb);lcd.print("% ");
break;
case 34: //pagina tempo accensione/spegnimento led royal blue
lcd.setCursor(2,0);
lcd.print("SET TIMER ON");
lcd.setCursor(5,1);
if(spulpiu>10){stimerrb++;if(stimerrb>1440){stimerrb=0;}} //incrementa minuti
if(spulmeno>10){stimerrb--;if(stimerrb<0){stimerrb=1440;}} //decrementa minuti
if (stimerrb<10){lcd.print("0");}lcd.print(stimerrb);lcd.print("min. ");
break;
case 35: //uscita menù
lcd.setCursor(6,0);
lcd.print("EXIT");
break;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 4: //pagina led UV
lcd.setCursor(3,0);
lcd.print("SET LED UV");
break;
case 41: //pagina ora di accensone led uv
lcd.setCursor(5,0);
lcd.print("SET ON");
lcd.setCursor(4,1);
if (onhhuv<10){lcd.print("0");}lcd.print(onhhuv);lcd.print(":");
if (onmmuv<10){lcd.print("0");}lcd.print(onmmuv);lcd.print(":");
lcd.print("00");
if(spulpiu>10){onmmuv++;if(onmmuv>59){onmmuv=0;onhhuv++;}if(onhhuv>23){onhhuv=0;}} //incrementa ore/minuti
if(spulmeno>10){onmmuv--;if(onmmuv<0){onmmuv=59;onhhuv--;}if(onhhuv<0){onhhuv=23;}} //decrementa ore/minuti
break;
case 42: //pagina ora di spegnimento led uv
lcd.setCursor(5,0);
lcd.print("SET OFF");
lcd.setCursor(4,1);
if (offhhuv<10){lcd.print("0");}lcd.print(offhhuv);lcd.print(":");
if (offmmuv<10){lcd.print("0");}lcd.print(offmmuv);lcd.print(":");
lcd.print("00");
if(spulpiu>10){offmmuv++;if(offmmuv>59){offmmuv=0;offhhuv++;}if(offhhuv>23){offhhuv=0;}} //incrementa ore/minuti
if(spulmeno>10){offmmuv--;if(offmmuv<0){offmmuv=59;offhhuv--;}if(offhhuv<0){offhhuv=23;}} //decrementa ore/minuti
break;
case 43: //pagina intensità led uv
lcd.setCursor(2,0);
lcd.print("SET INTENSITY");
lcd.setCursor(7,1);
if(spulpiu>10){slumuv++;if(slumuv>99){slumuv=100;}} //aumenta intensità led uv
if(spulmeno>10){slumuv--;if(slumuv<1){slumuv=0;}} //diminuisci intensità led uv
if (slumuv<10){lcd.print("0");}lcd.print(slumuv);lcd.print("% ");
break;
case 44: //pagina tempo accensione/spegnimento led uv
lcd.setCursor(2,0);
lcd.print("SET TIMER ON");
lcd.setCursor(5,1);
if(spulpiu>10){stimeruv++;if(stimeruv>1440){stimeruv=0;}} //incrementa minuti
if(spulmeno>10){stimeruv--;if(stimeruv<0){stimeruv=1440;}} //decrementa minuti
if (stimeruv<10){lcd.print("0");}lcd.print(stimeruv);lcd.print("min. ");
break;
case 45: //uscita menù
lcd.setCursor(6,0);
lcd.print("EXIT");
break;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 5: //pagina led moom
lcd.setCursor(2,0);
lcd.print("SET LED MOON");
break;
case 51: //pagina ora di accensone led moom
lcd.setCursor(5,0);
lcd.print("SET ON");
lcd.setCursor(4,1);
if (onhhm<10){lcd.print("0");}lcd.print(onhhm);lcd.print(":");
if (onmmm<10){lcd.print("0");}lcd.print(onmmm);lcd.print(":");
lcd.print("00");
if(spulpiu>10){onmmm++;if(onmmm>59){onmmm=0;onhhm++;}if(onhhm>23){onhhm=0;}} //incrementa ore/minuti
if(spulmeno>10){onmmm--;if(onmmm<0){onmmm=59;onhhm--;}if(onhhm<0){onhhm=23;}} //decrementa ore/minuti
break;
case 52: //pagina ora di spegnimento led moom
lcd.setCursor(5,0);
lcd.print("SET OFF");
lcd.setCursor(4,1);
if (offhhm<10){lcd.print("0");}lcd.print(offhhm);lcd.print(":");
if (offmmm<10){lcd.print("0");}lcd.print(offmmm);lcd.print(":");
lcd.print("00");
if(spulpiu>10){offmmm++;if(offmmm>59){offmmm=0;offhhm++;}if(offhhm>23){offhhm=0;}} //incrementa ore/minuti
if(spulmeno>10){offmmm--;if(offmmm<0){offmmm=59;offhhm--;}if(offhhm<0){offhhm=23;}} //decrementa ore/minuti
break;
case 53: //pagina tempo accensione/spegnimento led moom
lcd.setCursor(2,0);
lcd.print("SET TIMER ON");
lcd.setCursor(5,1);
if(spulpiu>10){stimerm++;if(stimerm>1440){stimerm=0;}} //incrementa minuti
if(spulmeno>10){stimerm--;if(stimerm<0){stimerm=1440;}} //decrementa minuti
if (stimerm<10){lcd.print("0");}lcd.print(stimerm);lcd.print("min. ");
break;
case 54: //uscita menù
lcd.setCursor(6,0);
lcd.print("EXIT");
break;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 6: //pagina ventole
lcd.setCursor(5,0);
lcd.print("SET FAN");
break;
case 61: //pagina ventole
lcd.setCursor(1,0);lcd.write(0);lcd.createChar(0,g radi);
lcd.setCursor(2,0);
lcd.print("C");
lcd.setCursor(4,0);
lcd.print("ON VENTOLE");
lcd.setCursor(6,1);
if (svtemp<10){lcd.print("0");}lcd.print(svtemp);
lcd.setCursor(8,1);lcd.write(0);lcd.createChar(0,g radi);
lcd.setCursor(9,1);
lcd.print("C");
if(spulpiu>10){svtemp++;}if(svtemp>99){svtemp=0;}
if(spulmeno>10){svtemp--;}if(svtemp<1){svtemp=99;}
break;
case 62: //uscita menù
lcd.setCursor(6,0);
lcd.print("EXIT");
break;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 7: //pagina orologio
lcd.setCursor(4,0);
lcd.print("SET CLOCK");
break;
case 71: //pagina modifica orologio
lcd.setCursor(2,0);
lcd.print("CHANGE CLOCK");
lcd.setCursor(4,1);
if(spulpiu>10){ss=0;rtc.setTime(hh,mm++,ss);if(mm>59){mm=0;hh++;}if(hh>23){hh=0;}} //incrementa ore/minuti
if(spulmeno>10){ss=0;rtc.setTime(hh,mm--,ss);if(mm<0){mm=59;hh--;}if(hh<0){hh=23;}} //decrementa ore/minuti
if (rtc.getHours()<10){lcd.print("0");}lcd.print(rtc.getHours(), DEC);
lcd.print(":");
if (rtc.getMinutes()<10){lcd.print("0");}lcd.print(rtc.getMinutes(), DEC);
lcd.print(":");
if (rtc.getSeconds()<10){lcd.print("0");}lcd.print(rtc.getSeconds(), DEC);
break;
case 72: //uscita menù
lcd.setCursor(6,0);
lcd.print("EXIT");
break;
}
}
[/CODE]
[CODICE]#include <ShiftLCD.h> //libreria shift register
#include <math.h> // libreria calcoli matematici
#include <swRTC.h> //libreria rtc
//pin 13/11 non utilizzabili senza shield RTC
//pin 3 non utilizzabile come uscita analogicam
#define sens A0 //sensore temperatura NTC 5Kohm
#define pulmenu A1 //scorrimento menù
#define pulset A2 //pulsante di conferma
#define pulpiu A3 //pulsante che incrementa il valore impostato
#define pulmeno A4 //pulsante che decrementa il valore impostato
#define ventole 3 //ventole di raffreddamento
#define led20 6 //led bianchi 20.000K°
#define led10 5 //led bianchi 10.000K°
#define ledrb 9 //led royal blu
#define leduv 10 //led uv
#define ledm 4 //led moom
ShiftLCD lcd(0,2,1); //lcd
swRTC rtc; //rtc
int spulmenu=0; //stato pulsante di scorrimento menù
int spulset=0; //stato pulsante di conferma
int contamenu=0; //contatore pagine menù
int spulpiu=0; //stato pulsante che incrementa il valore impostato
int spulmeno=0; //stato pulsante che decrementa il valore impostato
int hh=12; //valore di preset ore
int mm=0; //valore di preset minuti
int ss=(rtc.getSeconds()); //valore di preset secondi
int svtemp=15; //set della temperatura di comando ventole
int onhh20=13; //valore di on ore led bianchi 20.000K°
int onmm20=0; //valore di on minuti led bianchi 20.000K°
int onhh10=12; //valore di on ore led bianchi 10.000K°
int onmm10=1; //valore di on minuti led bianchi 10.000K°
int onhhrb=13; //valore di on ore led rb
int onmmrb=2; //valore di on minuti led rb
int onhhuv=13; //valore di on ore led uv
int onmmuv=3; //valore di on minuti led uv
int onhhm=13; //valore di on ore led moom
int onmmm=3; //valore di on minuti led moom
int offhh20=13; //valore di off ore led bianchi 20.000K°
int offmm20=4; //valore di off minuti led bianchi 20.000K°
int offhh10=13; //valore di off ore led bianchi 10.000K°
int offmm10=5; //valore di off minuti led bianchi 10.000K°
int offhhrb=13; //valore di off ore led rb
int offmmrb=6; //valore di off minuti led rb
int offhhuv=13; //valore di off ore led uv
int offmmuv=7; //valore di off minuti led uv
int offhhm=13; //valore di off ore led moom
int offmmm=8; //valore di off minuti led moom
int slum20=(slum20/2.54); //set luminostità led bianchi 20.000K°
int slum10=(slum10/2.54); //set luminostità led bianchi 10.000K°
int slumrb=(slumrb/2.54); //set luminostità led rb
int slumuv=(slumuv/2.54); //set luminostità led uv
int stimer10=1; //set tempo di accensione led bianchi 10.000K°
int stimer20=2; //set tempo di accensione led bianchi 20.000K°
int stimerrb=3; //set tempo di accensione led royal blu
int stimeruv=4; //set tempo di accensione led uv
int stimerm=5; //set tempo di accensione led moom
int lum20=0; // luminostità led bianchi 20.000K°
int lum10=0; // luminostità led bianchi 10.000K°
int lumrb=0; // luminostità led rb
int lumuv=0; // luminostità led uv
int lumm=0; // luminostità led moom
float val=0; //Variabile di comodo per il calcolo della temperatura in base al proprio NTC
float NTC=5000; //Valore dell'NTC utilizzato. 5000=5k
float vsens(int RawADC){
val=10000/NTC;
val=4.5*val;
val=NTC*val;
long resistenza;
float Temp; //per il calcolo della tempratura
resistenza=((1024 * val / RawADC) - val);
Temp = log(resistenza); //Salva Log(resistance)
Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));
Temp = Temp - 273.15; // Converte gradi Kelvin in Celsius
return Temp; //Ritorna la temperatura calcolata
}
byte gradi[8] = {B00111,B00101,B00111}; //simbolo gradi
void setup(){
lcd.begin(16,2);
rtc.setTime(hh,mm,ss);
rtc.stopRTC();
rtc.startRTC();
pinMode(ventole,OUTPUT);
pinMode(led20,OUTPUT);
pinMode(led10,OUTPUT);
pinMode(ledrb,OUTPUT);
pinMode(leduv,OUTPUT);
pinMode(ledm,OUTPUT);
}
void loop(){
delay(150); //ritardo risposta pulsanti
float temp;temp=vsens(analogRead(sens));temp = (temp * 9.0)/ 5.0 + 32.0; //calcolo della temperatura
if(temp>=svtemp){digitalWrite(ventole,HIGH);}else{digitalW rite(ventole,LOW);} //controllo ventole con la temperatura
rtc.getHours();rtc.getMinutes();rtc.getSeconds(); //orologio
spulmenu=analogRead(pulmenu);
spulset=analogRead(pulset);
spulpiu=analogRead(pulpiu);
spulmeno=analogRead(pulmeno);
//scorrimento menù
if((spulmenu>10)&&(contamenu==0)){contamenu=1;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==1)){contamenu=2;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==2)){contamenu=3;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==3)){contamenu=4;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==4)){contamenu=5;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==5)){contamenu=6;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==6)){contamenu=7;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==7)){contamenu=0;lcd.clear();
}}}}}}}}
//scorrimento sottomenù led 10000°K
if((spulset>10)&&(contamenu==1)){contamenu=11;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==11)){contamenu=12;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==12)){contamenu=13;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==13)){contamenu=14;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==14)){contamenu=15;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==15)){contamenu=11;lcd.clear();
}}}}}}
//scorrimento sottomenù led 20000°K
if((spulset>10)&&(contamenu==2)){contamenu=21;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==21)){contamenu=22;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==22)){contamenu=23;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==23)){contamenu=24;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==24)){contamenu=25;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==25)){contamenu=21;lcd.clear();
}}}}}}
//scorrimento sottomenù led royal blu
if((spulset>10)&&(contamenu==3)){contamenu=31;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==31)){contamenu=32;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==32)){contamenu=33;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==33)){contamenu=34;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==34)){contamenu=35;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==35)){contamenu=31;lcd.clear();
}}}}}}
//scorrimento sottomenù led uv
if((spulset>10)&&(contamenu==4)){contamenu=41;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==41)){contamenu=42;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==42)){contamenu=43;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==43)){contamenu=44;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==44)){contamenu=45;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==45)){contamenu=41;lcd.clear();
}}}}}}
//scorrimento sottomenù led moom
if((spulset>10)&&(contamenu==5)){contamenu=51;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==51)){contamenu=52;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==52)){contamenu=53;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==53)){contamenu=54;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==54)){contamenu=51;lcd.clear();
}}}}}
//scorrimento sottomenù ventole
if((spulset>10)&&(contamenu==6)){contamenu=61;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==61)){contamenu=62;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==62)){contamenu=61;lcd.clear();
}}}
//scorrimento sottomenù orario
if((spulset>10)&&(contamenu==7)){contamenu=71;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==71)){contamenu=72;lcd.clear();
}else{if((spulmenu>10)&&(contamenu==72)){contamenu=71;lcd.clear();
}}}
//uscita menù
if((spulset>10)&&(contamenu==15)){contamenu=1;lcd.clear();
}else{if((spulset>10)&&(contamenu==25)){contamenu=2;lcd.clear();
}else{if((spulset>10)&&(contamenu==35)){contamenu=3;lcd.clear();
}else{if((spulset>10)&&(contamenu==45)){contamenu=4;lcd.clear();
}else{if((spulset>10)&&(contamenu==54)){contamenu=5;lcd.clear();
}else{if((spulset>10)&&(contamenu==62)){contamenu=6;lcd.clear();
}else{if((spulset>10)&&(contamenu==72)){contamenu=7;lcd.clear();
}}}}}}}
if((onhh10==rtc.getHours())&&(onmm10==rtc.getMinutes())){lum10++;}if(lum10>slum10){lum10=slum10;} //orario di on led bianchi 10.000K°
if((offhh10==rtc.getHours())&&(offmm10==rtc.getMinutes())){lum10--;}if(lum10<1){lum10=0;} //orario di off led bianchi 10.000K°
analogWrite(led10,lum10);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
switch(contamenu){
case 0: //pagina iniziale
lcd.setCursor(0, 0);
if (rtc.getHours()<10){lcd.print("0");}lcd.print(rtc.getHours(), DEC);
lcd.print(":");
if (rtc.getMinutes()<10){lcd.print("0");}lcd.print(rtc.getMinutes(), DEC);
lcd.print(":");
if (rtc.getSeconds()<10){lcd.print("0");}lcd.print(rtc.getSeconds(), DEC);
lcd.print(" ");
lcd.setCursor(12,0);lcd.print(temp,0.5);
lcd.setCursor(14,0);lcd.write(0);lcd.createChar(0, gradi);lcd.setCursor(15,0);lcd.print("C");
lcd.setCursor(3,1);
lcd.print("POWER:");lcd.print("");lcd.print("% ");
break;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 1: //pagina led 10000K
lcd.setCursor(1,0);
lcd.print("SET LED 10000K");
break;
case 11: //pagina ora di accensone led 10000K
lcd.setCursor(5,0);
lcd.print("SET ON");
lcd.setCursor(4,1);
if (onhh10<10){lcd.print("0");}lcd.print(onhh10);lcd.print(":");
if (onmm10<10){lcd.print("0");}lcd.print(onmm10);lcd.print(":");
lcd.print("00");
if(spulpiu>10){onmm10++;if(onmm10>59){onmm10=0;onhh10++;}if(onhh10>23){onhh10=0;}} //incrementa ore/minuti
if(spulmeno>10){onmm10--;if(onmm10<0){onmm10=59;onhh10--;}if(onhh10<0){onhh10=23;}} //decrementa ore/minuti
break;
case 12: //pagina ora di spegnimento led 10000K
lcd.setCursor(5,0);
lcd.print("SET OFF");
lcd.setCursor(4,1);
if (offhh10<10){lcd.print("0");}lcd.print(offhh10);lcd.print(":");
if (offmm10<10){lcd.print("0");}lcd.print(offmm10);lcd.print(":");
lcd.print("00");
if(spulpiu>10){offmm10++;if(offmm10>59){offmm10=0;offhh10++;}if(offhh10>23){offhh10=0;}} //incrementa ore/minuti
if(spulmeno>10){offmm10--;if(offmm10<0){offmm10=59;offhh10--;}if(offhh10<0){offhh10=23;}} //decrementa ore/minuti
break;
case 13: //pagina intensità led 10000K
lcd.setCursor(2,0);
lcd.print("SET INTENSITY");
lcd.setCursor(7,1);
if(spulpiu>10){slum10++;if(slum10>99){slum10=100;}} //aumenta intensità led 10000K
if(spulmeno>10){slum10--;if(slum10<1){slum10=0;}} //diminuisci intensità led 10000K
if (slum10<10){lcd.print("0");}lcd.print(slum10);lcd.print("% ");
break;
case 14: //pagina tempo accensione/spegnimento led 10000K
lcd.setCursor(2,0);
lcd.print("SET TIMER ON");
lcd.setCursor(5,1);
if(spulpiu>10){stimer10++;if(stimer10>1440){stimer10=0;}} //incrementa minuti
if(spulmeno>10){stimer10--;if(stimer10<0){stimer10=1440;}} //decrementa minuti
if (stimer10<10){lcd.print("0");}lcd.print(stimer10);lcd.print("min. ");
break;
case 15: //uscita menù
lcd.setCursor(6,0);
lcd.print("EXIT");
break;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 2: //pagina led 20000K
lcd.setCursor(1,0);
lcd.print("SET LED 20000K");
break;
case 21: //pagina ora di accensone led 20000K
lcd.setCursor(5,0);
lcd.print("SET ON");
lcd.setCursor(4,1);
if (onhh20<10){lcd.print("0");}lcd.print(onhh20);lcd.print(":");
if (onmm20<10){lcd.print("0");}lcd.print(onmm20);lcd.print(":");
lcd.print("00");
if(spulpiu>10){onmm20++;if(onmm20>59){onmm20=0;onhh20++;}if(onhh20>23){onhh20=0;}} //incrementa ore/minuti
if(spulmeno>10){onmm20--;if(onmm20<0){onmm20=59;onhh20--;}if(onhh20<0){onhh20=23;}} //decrementa ore/minuti
break;
case 22: //pagina ora di spegnimento led 20000K
lcd.setCursor(5,0);
lcd.print("SET OFF");
lcd.setCursor(4,1);
if (offhh20<10){lcd.print("0");}lcd.print(offhh20);lcd.print(":");
if (offmm20<10){lcd.print("0");}lcd.print(offmm20);lcd.print(":");
lcd.print("00");
if(spulpiu>10){offmm20++;if(offmm20>59){offmm20=0;offhh20++;}if(offhh20>23){offhh20=0;}} //incrementa ore/minuti
if(spulmeno>10){offmm20--;if(offmm20<0){offmm20=59;offhh20--;}if(offhh20<0){offhh20=23;}} //decrementa ore/minuti
break;
case 23: //pagina intensità led 20000K
lcd.setCursor(2,0);
lcd.print("SET INTENSITY");
lcd.setCursor(7,1);
if(spulpiu>10){slum20++;if(slum20>99){slum20=100;}} //aumenta intensità led 20000K
if(spulmeno>10){slum20--;if(slum20<1){slum20=0;}} //diminuisci intensità led 20000K
if (slum20<10){lcd.print("0");}lcd.print(slum20);lcd.print("% ");
break;
case 24: //pagina tempo accensione/spegnimento led 20000K
lcd.setCursor(2,0);
lcd.print("SET TIMER ON");
lcd.setCursor(5,1);
if(spulpiu>10){stimer20++;if(stimer20>1440){stimer20=0;}} //incrementa minuti
if(spulmeno>10){stimer20--;if(stimer20<0){stimer20=1440;}} //decrementa minuti
if (stimer20<10){lcd.print("0");}lcd.print(stimer20);lcd.print("min. ");
break;
case 25: //uscita menù
lcd.setCursor(6,0);
lcd.print("EXIT");
break;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 3: //pagina led royal blue
lcd.setCursor(1,0);
lcd.print("SET ROYAL BLUE");
break;
case 31: //pagina ora di accensone led royal blue
lcd.setCursor(5,0);
lcd.print("SET ON");
lcd.setCursor(4,1);
if (onhhrb<10){lcd.print("0");}lcd.print(onhhrb);lcd.print(":");
if (onmmrb<10){lcd.print("0");}lcd.print(onmmrb);lcd.print(":");
lcd.print("00");
if(spulpiu>10){onmmrb++;if(onmmrb>59){onmmrb=0;onhhrb++;}if(onhhrb>23){onhhrb=0;}} //incrementa ore/minuti
if(spulmeno>10){onmmrb--;if(onmmrb<0){onmmrb=59;onhhrb--;}if(onhhrb<0){onhhrb=23;}} //decrementa ore/minuti
break;
case 32: //pagina ora di spegnimento led royal blue
lcd.setCursor(5,0);
lcd.print("SET OFF");
lcd.setCursor(4,1);
if (offhhrb<10){lcd.print("0");}lcd.print(offhhrb);lcd.print(":");
if (offmmrb<10){lcd.print("0");}lcd.print(offmmrb);lcd.print(":");
lcd.print("00");
if(spulpiu>10){offmmrb++;if(offmmrb>59){offmmrb=0;offhhrb++;}if(offhhrb>23){offhhrb=0;}} //incrementa ore/minuti
if(spulmeno>10){offmmrb--;if(offmmrb<0){offmmrb=59;offhhrb--;}if(offhhrb<0){offhhrb=23;}} //decrementa ore/minuti
break;
case 33: //pagina intensità led royal blue
lcd.setCursor(2,0);
lcd.print("SET INTENSITY");
lcd.setCursor(7,1);
if(spulpiu>10){slumrb++;if(slumrb>99){slumrb=100;}} //aumenta intensità led royal blue
if(spulmeno>10){slumrb--;if(slumrb<1){slumrb=0;}} //diminuisci intensità led royal blue
if (slumrb<10){lcd.print("0");}lcd.print(slumrb);lcd.print("% ");
break;
case 34: //pagina tempo accensione/spegnimento led royal blue
lcd.setCursor(2,0);
lcd.print("SET TIMER ON");
lcd.setCursor(5,1);
if(spulpiu>10){stimerrb++;if(stimerrb>1440){stimerrb=0;}} //incrementa minuti
if(spulmeno>10){stimerrb--;if(stimerrb<0){stimerrb=1440;}} //decrementa minuti
if (stimerrb<10){lcd.print("0");}lcd.print(stimerrb);lcd.print("min. ");
break;
case 35: //uscita menù
lcd.setCursor(6,0);
lcd.print("EXIT");
break;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 4: //pagina led UV
lcd.setCursor(3,0);
lcd.print("SET LED UV");
break;
case 41: //pagina ora di accensone led uv
lcd.setCursor(5,0);
lcd.print("SET ON");
lcd.setCursor(4,1);
if (onhhuv<10){lcd.print("0");}lcd.print(onhhuv);lcd.print(":");
if (onmmuv<10){lcd.print("0");}lcd.print(onmmuv);lcd.print(":");
lcd.print("00");
if(spulpiu>10){onmmuv++;if(onmmuv>59){onmmuv=0;onhhuv++;}if(onhhuv>23){onhhuv=0;}} //incrementa ore/minuti
if(spulmeno>10){onmmuv--;if(onmmuv<0){onmmuv=59;onhhuv--;}if(onhhuv<0){onhhuv=23;}} //decrementa ore/minuti
break;
case 42: //pagina ora di spegnimento led uv
lcd.setCursor(5,0);
lcd.print("SET OFF");
lcd.setCursor(4,1);
if (offhhuv<10){lcd.print("0");}lcd.print(offhhuv);lcd.print(":");
if (offmmuv<10){lcd.print("0");}lcd.print(offmmuv);lcd.print(":");
lcd.print("00");
if(spulpiu>10){offmmuv++;if(offmmuv>59){offmmuv=0;offhhuv++;}if(offhhuv>23){offhhuv=0;}} //incrementa ore/minuti
if(spulmeno>10){offmmuv--;if(offmmuv<0){offmmuv=59;offhhuv--;}if(offhhuv<0){offhhuv=23;}} //decrementa ore/minuti
break;
case 43: //pagina intensità led uv
lcd.setCursor(2,0);
lcd.print("SET INTENSITY");
lcd.setCursor(7,1);
if(spulpiu>10){slumuv++;if(slumuv>99){slumuv=100;}} //aumenta intensità led uv
if(spulmeno>10){slumuv--;if(slumuv<1){slumuv=0;}} //diminuisci intensità led uv
if (slumuv<10){lcd.print("0");}lcd.print(slumuv);lcd.print("% ");
break;
case 44: //pagina tempo accensione/spegnimento led uv
lcd.setCursor(2,0);
lcd.print("SET TIMER ON");
lcd.setCursor(5,1);
if(spulpiu>10){stimeruv++;if(stimeruv>1440){stimeruv=0;}} //incrementa minuti
if(spulmeno>10){stimeruv--;if(stimeruv<0){stimeruv=1440;}} //decrementa minuti
if (stimeruv<10){lcd.print("0");}lcd.print(stimeruv);lcd.print("min. ");
break;
case 45: //uscita menù
lcd.setCursor(6,0);
lcd.print("EXIT");
break;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 5: //pagina led moom
lcd.setCursor(2,0);
lcd.print("SET LED MOON");
break;
case 51: //pagina ora di accensone led moom
lcd.setCursor(5,0);
lcd.print("SET ON");
lcd.setCursor(4,1);
if (onhhm<10){lcd.print("0");}lcd.print(onhhm);lcd.print(":");
if (onmmm<10){lcd.print("0");}lcd.print(onmmm);lcd.print(":");
lcd.print("00");
if(spulpiu>10){onmmm++;if(onmmm>59){onmmm=0;onhhm++;}if(onhhm>23){onhhm=0;}} //incrementa ore/minuti
if(spulmeno>10){onmmm--;if(onmmm<0){onmmm=59;onhhm--;}if(onhhm<0){onhhm=23;}} //decrementa ore/minuti
break;
case 52: //pagina ora di spegnimento led moom
lcd.setCursor(5,0);
lcd.print("SET OFF");
lcd.setCursor(4,1);
if (offhhm<10){lcd.print("0");}lcd.print(offhhm);lcd.print(":");
if (offmmm<10){lcd.print("0");}lcd.print(offmmm);lcd.print(":");
lcd.print("00");
if(spulpiu>10){offmmm++;if(offmmm>59){offmmm=0;offhhm++;}if(offhhm>23){offhhm=0;}} //incrementa ore/minuti
if(spulmeno>10){offmmm--;if(offmmm<0){offmmm=59;offhhm--;}if(offhhm<0){offhhm=23;}} //decrementa ore/minuti
break;
case 53: //pagina tempo accensione/spegnimento led moom
lcd.setCursor(2,0);
lcd.print("SET TIMER ON");
lcd.setCursor(5,1);
if(spulpiu>10){stimerm++;if(stimerm>1440){stimerm=0;}} //incrementa minuti
if(spulmeno>10){stimerm--;if(stimerm<0){stimerm=1440;}} //decrementa minuti
if (stimerm<10){lcd.print("0");}lcd.print(stimerm);lcd.print("min. ");
break;
case 54: //uscita menù
lcd.setCursor(6,0);
lcd.print("EXIT");
break;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 6: //pagina ventole
lcd.setCursor(5,0);
lcd.print("SET FAN");
break;
case 61: //pagina ventole
lcd.setCursor(1,0);lcd.write(0);lcd.createChar(0,g radi);
lcd.setCursor(2,0);
lcd.print("C");
lcd.setCursor(4,0);
lcd.print("ON VENTOLE");
lcd.setCursor(6,1);
if (svtemp<10){lcd.print("0");}lcd.print(svtemp);
lcd.setCursor(8,1);lcd.write(0);lcd.createChar(0,g radi);
lcd.setCursor(9,1);
lcd.print("C");
if(spulpiu>10){svtemp++;}if(svtemp>99){svtemp=0;}
if(spulmeno>10){svtemp--;}if(svtemp<1){svtemp=99;}
break;
case 62: //uscita menù
lcd.setCursor(6,0);
lcd.print("EXIT");
break;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 7: //pagina orologio
lcd.setCursor(4,0);
lcd.print("SET CLOCK");
break;
case 71: //pagina modifica orologio
lcd.setCursor(2,0);
lcd.print("CHANGE CLOCK");
lcd.setCursor(4,1);
if(spulpiu>10){ss=0;rtc.setTime(hh,mm++,ss);if(mm>59){mm=0;hh++;}if(hh>23){hh=0;}} //incrementa ore/minuti
if(spulmeno>10){ss=0;rtc.setTime(hh,mm--,ss);if(mm<0){mm=59;hh--;}if(hh<0){hh=23;}} //decrementa ore/minuti
if (rtc.getHours()<10){lcd.print("0");}lcd.print(rtc.getHours(), DEC);
lcd.print(":");
if (rtc.getMinutes()<10){lcd.print("0");}lcd.print(rtc.getMinutes(), DEC);
lcd.print(":");
if (rtc.getSeconds()<10){lcd.print("0");}lcd.print(rtc.getSeconds(), DEC);
break;
case 72: //uscita menù
lcd.setCursor(6,0);
lcd.print("EXIT");
break;
}
}
[/CODE]