Show Posts
|
|
Pages: 1 2 [3] 4 5 ... 8
|
|
32
|
International / Software / Re: Non riesco a venirne a capo
|
on: November 11, 2012, 09:49:02 am
|
il timeStamp è una variabile propria della libreria in questione, giusto? Non è un classico 'comando' di C++. Certo, ne sarei felice, qualsiasi informazione in più è importantissima. Intanto ho rimodificato il codice aggiungendo 'abs che se non ho frainteso converte la cifra (in questo caso di 'time') in unnumero positivo, che sia essa in origine negativa o positiva. Eccolo /* * TimeRTC.pde * example code illustrating Time library with Real Time Clock. * */ #include <LiquidCrystal.h> #include <Time.h> #include <Wire.h> #include <DS1307RTC.h> // a basic DS1307 library that returns time as a time_t LiquidCrystal LCD(12,11,5,4,3,2);
void setup() { LCD.begin (16,2); setSyncProvider(RTC.get); // the function to get the time from the RTC }
void loop() {
LCD.setCursor(0,0); digitalClockDisplay(); delay(1000); DS1307RTC(); }
void digitalClockDisplay(){ // digital clock display of the time LCD.print(hour()); printDigits(minute()); LCD.setCursor(5,0); printDigits(second()); LCD.print(" "); }
void printDigits(int digits){ // utility function for digital clock display: prints preceding colon and leading 0 LCD.print(":"); if(digits < 10) LCD.print('0'); LCD.print(digits); } void DS1307RTC(){ int ledw1=9;//pin linea led bianchi e rb posteriore int ledw2=10;//pin linea led bianchi e rb anteriore int leduv=6;//pin linea led rossi, verdi, uv int dim; int ora; int oras; int moonlight=7;//pin led lunari int time=abs(hour()*60*60 + minute()*60 + second());//orario hr,min,sec ridotto in secondi//cambiato da unsigned int a int pinMode (ledw1,OUTPUT); pinMode (ledw2, OUTPUT); pinMode (leduv, OUTPUT); pinMode (moonlight,OUTPUT); dim=255/18;//aumento intensità per ogni step ora=45000;//12:30 ora accensione in millisecondi(ore*3600 minuti*60 secondi*1)*1000 oras=83700;//23:15 ora spegnimento in millisecondi(ore*3600 minuti*60 secondi*1)*1000 int x=150;//intervallo in millisecondi tra un fade e un altro
/*impostazione per l'accensione deiled lunari*/ if (time > oras+x*2 && time <=86399){ digitalWrite (moonlight, HIGH); } if (time >= ora*0 && time <=ora+x*2){ digitalWrite (moonlight, HIGH); } if (time <= oras+x*2 && time>ora+x*2){ digitalWrite (moonlight, LOW);} /*inizio della fase 'Alba' e aumento graduale dell'intensità dell'illuminazione*/ if ( time >= ora&&time <ora+x) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*16); LCD.setCursor(0,1); LCD.print ("Alba 0%");
}
if (time >= ora+x&&time<ora+x*2) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*14); LCD.setCursor(0,1); LCD.print ("Alba 6%");
}.......... ..................
if (time >=ora+x*15 && time<ora+x*16) { analogWrite (ledw1,dim*5); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Alba 90%");
} /*fase intermedia 'Giorno' nella quale l'illuminazione viene tenuta al massimo dell'intensità impostata e che va dalla fine dell'alba all'inizio della fase di decremento dell'illuminazione 'Tramonto' */ if (time >ora+x*16 && time <oras+x) { analogWrite (ledw1,dim*4); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Giorno");
} /*inizio della fase 'Tramonto' e diminuzione graduale dell'intensità dell'illuminazione fino al completo spegnimento*/
if (time >=oras+x&&time <oras+x*2) { analogWrite (ledw1,dim*5); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Tramonto -45:00");
}.......................
................. if (time >= oras+x*18&&time<oras+x*19) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*16); LCD.setCursor(0,1); LCD.print ("Tramonto -2:30"); } /*spegnimento completo dell'illuminazione, fase 'Notte' */ if (time >= oras+x*19 && time<=86399)
{ analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*18); LCD.setCursor(0,1); LCD.print ("Notte"); } if (time>=1 && time<=ora) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*18); LCD.setCursor(0,1); LCD.print ("Notte "); } delay(10);
}
|
|
|
|
|
33
|
International / Software / Re: Non riesco a venirne a capo
|
on: November 11, 2012, 05:43:17 am
|
|
Ogni pezzo di codice con if lavora in momenti differenti, ma ognuno contiene il comando per tutte e tre le linee, quindi non c'è un punto in cui sono scoperti, stamattina ad es, dopo che ieri sera dopo la mezzanotte ho controllato che funzionasse, verso le 11 ho trovato i pin che lavoravano bene ma il display vuoto, senza scritte, e' bastato ricaricare lo sketch ed è tornato tutto normale, come se ci fosse qualcosa che per un istante non abbia funzionato. C'è un modo per stabilizzare un codice? Non so, con dei delay, che fermano quando una parte del codice è vera, non saprei, mi sembra come se il tutto funzionasse, ma a volte...
|
|
|
|
|
34
|
International / Software / Re: Non riesco a venirne a capo
|
on: November 10, 2012, 07:16:04 pm
|
infatti ho fatto così if (time >= oras+x*19 && time<=86399)
{ analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*18); LCD.setCursor(0,1); LCD.print ("Notte"); } if (time>=0 && time<=ora+x) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*18); LCD.setCursor(0,1); LCD.print ("Notte"); }
|
|
|
|
|
35
|
International / Software / Re: Non riesco a venirne a capo
|
on: November 10, 2012, 12:06:36 pm
|
ho modificato qualcosina... forse ora...l'ultimo if, nella fase 'notte', mi viene accettato dal sw, ma va bene scritto così? Visto che quando sono le 23:59:59, dopo un secondo si azzera il conto quidni l'affermazione 'time > di...' diventava falsa visto che a mezzanotte ricominciando da zero, 0 è perforza minore di time. Inoltre ho aggiunto un void contenente solo l'impostazione della luminosità, prima non sapendo come fare l'avevo 'infilato' nel void 'printDigits', credo che così sia più 'pulito' /* * TimeRTC.pde * example code illustrating Time library with Real Time Clock. * */ #include <LiquidCrystal.h> #include <Time.h> #include <Wire.h> #include <DS1307RTC.h> // a basic DS1307 library that returns time as a time_t LiquidCrystal LCD(12,11,5,4,3,2);
void setup() { LCD.begin (16,2); setSyncProvider(RTC.get); // the function to get the time from the RTC }
void loop() { LCD.setCursor(0,0); digitalClockDisplay(); delay(1000); DS1307RTC(); } void digitalClockDisplay(){ // digital clock display of the time LCD.print(hour()); printDigits(minute()); LCD.setCursor(5,0); printDigits(second()); LCD.print(" "); }
void printDigits(int digits){ // utility function for digital clock display: prints preceding colon and leading 0 LCD.print(":"); if(digits < 10) LCD.print('0'); LCD.print(digits); } void DS1307RTC(){ int ledw1=9;//pin linea led bianchi e rb posteriore int ledw2=10;//pin linea led bianchi e rb anteriore int leduv=6;//pin linea led rossi, verdi, uv int dim; int ora; int oras; int moonlight=7;//pin led lunari long time=(hour()*60*60 + minute()*60 + second());//orario hr,min,sec ridotto in secondi pinMode (ledw1,OUTPUT); pinMode (ledw2, OUTPUT); pinMode (leduv, OUTPUT); pinMode (moonlight,OUTPUT); dim=255/18;//aumento intensità per ogni step ora=45000;//12:30 ora accensione in millisecondi(ore*3600 minuti*60 secondi*1)*1000 oras=83700;//23:15 ora spegnimento in millisecondi(ore*3600 minuti*60 secondi*1)*1000 int x=150;//intervallo in millisecondi tra un fade e un altro
/*impostazione per l'accensione deiled lunari*/ if (time > oras+x*2 or time<ora+x){ digitalWrite (moonlight, HIGH); } if (time < oras+x*2 && time>ora+x){ digitalWrite (moonlight, LOW);} /*inizio della fase 'Alba' e aumento graduale dell'intensità dell'illuminazione*/ if ( time >= ora&&time <ora+x) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*16); LCD.setCursor(0,1); LCD.print ("Alba 0%");
}
if (time >= ora+x&&time<ora+x*2) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*14); LCD.setCursor(0,1); LCD.print ("Alba 6%");
}
if (time >= ora+x*2&&time < ora+x*3) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*16); analogWrite (leduv, dim*14); LCD.setCursor(0,1); LCD.print ("Alba 12%");
}
if (time >= ora+x*3&&time < ora+x*4) { analogWrite (ledw1,dim*17); analogWrite (ledw2,dim*15); analogWrite (leduv, dim*13); LCD.setCursor(0,1); LCD.print ("Alba 18%");
}......... .................
if (time >=ora+x*15 && time<ora+x*16) { analogWrite (ledw1,dim*5); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Alba 90%");
} /*fase intermedia 'Giorno' nella quale l'illuminazione viene tenuta al massimo dell'intensità impostata e che va dalla fine dell'alba all'inizio della fase di decremento dell'illuminazione 'Tramonto' */ if (time >ora+x*16 && time <oras+x) { analogWrite (ledw1,dim*4); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Giorno");
} /*inizio della fase 'Tramonto' e diminuzione graduale dell'intensità dell'illuminazione fino al completo spegnimento*/
if (time >=oras+x&&time <oras+x*2) { analogWrite (ledw1,dim*5); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Tramonto -42:30");
}
if (time >= oras+x*2&&time<oras+x*3) { analogWrite (ledw1,dim*6); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Tramonto -40:00");
}
if (time >= oras+x*3&&time<oras+x*4) { analogWrite (ledw1,dim*7); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Tramonto -37:30");
}
if (time >= oras+x*4&&time<oras+x*5) { analogWrite (ledw1,dim*8); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Tramonto -35:00");
}
if (time >= oras+x*5&&time<oras+x*6) { analogWrite (ledw1,dim*9); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*5); LCD.setCursor(0,1); LCD.print ("Tramonto -32:30");
}
if (time >=oras+x*6&&time<oras+x*7) { analogWrite (ledw1,dim*10); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*6); LCD.setCursor(0,1); LCD.print ("Tramonto -30:00");
}
if (time >=oras+x*7&&time<oras+x*8) { analogWrite (ledw1,dim*11); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*7); LCD.setCursor(0,1); LCD.print ("Tramonto -27:30");
}
if (time >=oras+x*8&&time<oras+x*9) { analogWrite (ledw1,dim*12); analogWrite (ledw2,dim*6); analogWrite (leduv, dim*8); LCD.setCursor(0,1); LCD.print ("Tramonto -25:00");
}
if (time >=oras+x*9&&time<oras+x*10) { analogWrite (ledw1,dim*13); analogWrite (ledw2,dim*7); analogWrite (leduv, dim*9); LCD.setCursor(0,1); LCD.print ("Tramonto -22:30");
}
if (time >= oras+x*10&&time<oras+x*11) { analogWrite (ledw1,dim*14); analogWrite (ledw2,dim*9); analogWrite (leduv, dim*10); LCD.setCursor(0,1); LCD.print ("Tramonto -20:00");
}
if (time >= oras+x*11&&time<oras+x*12) { analogWrite (ledw1,dim*15); analogWrite (ledw2,dim*10); analogWrite (leduv, dim*10); LCD.setCursor(0,1); LCD.print ("Tramonto -17:30");
}
if (time >= oras+x*12&&time<oras+x*13) { analogWrite (ledw1,dim*16); analogWrite (ledw2,dim*11); analogWrite (leduv, dim*10); LCD.setCursor(0,1); LCD.print ("Tramonto -15:00"); }
if (time >= oras+x*13&&time<oras+x*14) { analogWrite (ledw1,dim*17); analogWrite (ledw2,dim*14); analogWrite (leduv, dim*10); LCD.setCursor(0,1); LCD.print ("Tramonto -12:30"); } if (time >= oras+x*14&&time<oras+x*15) { analogWrite (ledw1,dim*17); analogWrite (ledw2,dim*15); analogWrite (leduv, dim*11); LCD.setCursor(0,1); LCD.print ("Tramonto -10:00"); }
if (time >= oras+x*15&&time<oras+x*16) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*16); analogWrite (leduv, dim*11); LCD.setCursor(0,1); LCD.print ("Tramonto -7:30"); }
if (time >=oras+x*16&&time<oras+x*17) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*17); analogWrite (leduv, dim*11); LCD.setCursor(0,1); LCD.print ("Tramonto -5:00"); }
if (time >= oras+x*17&&time<oras+x*18) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*14); LCD.setCursor(0,1); LCD.print ("Tramonto -2:30"); }
if (time >= oras+x*18&&time<oras+x*19) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*16); LCD.setCursor(0,1); LCD.print ("Tramonto -2:30"); } /*spegnimento completo dell'illuminazione, fase 'Notte' */ if (time >= oras+x*19 && time<=86399) if (time <ora) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*18); LCD.setCursor(0,1); LCD.print ("Notte"); } delay(10);
}
|
|
|
|
|
36
|
International / Software / Re: Non riesco a venirne a capo
|
on: November 10, 2012, 09:42:46 am
|
|
si, questo dei long e int l'ho fatto, ma il problema è che sembra che in certi punti legga un numero negativo al posto del positivo, se nel pezzo di codice che sta 'lavorando' cambio il > in < o viceversa funziona... almeno quella parte
|
|
|
|
|
37
|
International / Software / Re: Non riesco a venirne a capo
|
on: November 10, 2012, 09:09:54 am
|
Perché usa variabili di tipo int per numeri che possono arrivare max a 59? ore min e sec espressi in secondi arrivano a oltre 80000, perchè dici 59? Che variabili dovrei utilizzare? Ad esempio, lo spezzone di codice dove sta? E' racchiuso nel loop()? Se sì, perché ad ogni ciclo imposta i pin in output? I pin li ho impostati solo all'inizio,perchè dici che a ogni ciclo li reimposto?
|
|
|
|
|
39
|
International / Software / Re: Non riesco a venirne a capo
|
on: November 10, 2012, 08:32:23 am
|
Tranquillo, la mia risposta era intesa simpaticamente, la cosa seria e' che davvero sto imparando mentre lo programmo, come diceva un famoso comico... di più nin zo' 
|
|
|
|
|
40
|
International / Software / Re: Non riesco a venirne a capo
|
on: November 10, 2012, 07:12:57 am
|
/*inizio della fase 'Tramonto' e diminuzione graduale dell'intensità dell'illuminazione fino al completo spegnimento*/
if (time >=oras+x&&time <oras+x*2) { analogWrite (ledw1,dim*5); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Tramonto -42:30"); delay(10); }
if (time >= oras+x*2&&time<oras+x*3) { analogWrite (ledw1,dim*6); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Tramonto -40:00"); delay(10); }
if (time >= oras+x*3&&time<oras+x*4) { analogWrite (ledw1,dim*7); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Tramonto -37:30"); delay(10); }
if (time >= oras+x*4&&time<oras+x*5) { analogWrite (ledw1,dim*8); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Tramonto -35:00"); delay(10); }
if (time >= oras+x*5&&time<oras+x*6) { analogWrite (ledw1,dim*9); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*5); LCD.setCursor(0,1); LCD.print ("Tramonto -32:30"); delay(10); }
if (time >=oras+x*6&&time<oras+x*7) { analogWrite (ledw1,dim*10); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*6); LCD.setCursor(0,1); LCD.print ("Tramonto -30:00"); delay(10); }
if (time >=oras+x*7&&time<oras+x*8) { analogWrite (ledw1,dim*11); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*7); LCD.setCursor(0,1); LCD.print ("Tramonto -27:30"); delay(10); }
if (time >=oras+x*8&&time<oras+x*9) { analogWrite (ledw1,dim*12); analogWrite (ledw2,dim*6); analogWrite (leduv, dim*8); LCD.setCursor(0,1); LCD.print ("Tramonto -25:00"); delay(10); }
if (time >=oras+x*9&&time<oras+x*10) { analogWrite (ledw1,dim*13); analogWrite (ledw2,dim*7); analogWrite (leduv, dim*9); LCD.setCursor(0,1); LCD.print ("Tramonto -22:30"); delay(10); }
if (time >= oras+x*10&&time<oras+x*11) { analogWrite (ledw1,dim*14); analogWrite (ledw2,dim*9); analogWrite (leduv, dim*10); LCD.setCursor(0,1); LCD.print ("Tramonto -20:00"); delay(10); }
if (time >= oras+x*11&&time<oras+x*12) { analogWrite (ledw1,dim*15); analogWrite (ledw2,dim*10); analogWrite (leduv, dim*10); LCD.setCursor(0,1); LCD.print ("Tramonto -17:30"); delay(10); }
if (time >= oras+x*12&&time<oras+x*13) { analogWrite (ledw1,dim*16); analogWrite (ledw2,dim*11); analogWrite (leduv, dim*10); LCD.setCursor(0,1); LCD.print ("Tramonto -15:00"); delay(10); }
if (time >= oras+x*13&&time<oras+x*14) { analogWrite (ledw1,dim*17); analogWrite (ledw2,dim*14); analogWrite (leduv, dim*10); LCD.setCursor(0,1); LCD.print ("Tramonto -12:30"); delay(10); } if (time >= oras+x*14&&time<oras+x*15) { analogWrite (ledw1,dim*17); analogWrite (ledw2,dim*15); analogWrite (leduv, dim*11); LCD.setCursor(0,1); LCD.print ("Tramonto -10:00"); delay(10); }
if (time >= oras+x*15&&time<oras+x*16) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*16); analogWrite (leduv, dim*11); LCD.setCursor(0,1); LCD.print ("Tramonto -7:30"); delay(10); }
if (time >=oras+x*16&&time<oras+x*17) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*17); analogWrite (leduv, dim*11); LCD.setCursor(0,1); LCD.print ("Tramonto -5:00"); delay(10); }
if (time >= oras+x*17&&time<oras+x*18) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*14); LCD.setCursor(0,1); LCD.print ("Tramonto -2:30"); delay(10); }
if (time >= oras+x*18&&time<oras+x*19) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*16); LCD.setCursor(0,1); LCD.print ("Tramonto -2:30"); delay(10); } /*spegnimento completo dell'illuminazione, fase 'Notte' */ if (time >= oras+x*19 or time<ora) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*18); LCD.setCursor(0,1); LCD.print ("Notte"); } delay(10);
}
|
|
|
|
|
41
|
International / Software / Re: Non riesco a venirne a capo
|
on: November 10, 2012, 07:12:29 am
|
ecco lo sketch, diviso in due parti sennò non mi entrava, abbiate pazienza e... grazie davvero a tutti /* /* * TimeRTC.pde * example code illustrating Time library with Real Time Clock. * */ #include <LiquidCrystal.h> #include <Time.h> #include <Wire.h> #include <DS1307RTC.h> // a basic DS1307 library that returns time as a time_t LiquidCrystal LCD(12,11,5,4,3,2);
void setup() { LCD.begin (16,2); setSyncProvider(RTC.get); // the function to get the time from the RTC }
void loop() { LCD.setCursor(0,0); digitalClockDisplay(); delay(1000); } void digitalClockDisplay(){ // digital clock display of the time LCD.print(hour()); printDigits(minute()); LCD.setCursor(5,0); printDigits(second()); LCD.print(" "); }
void printDigits(int digits){ // utility function for digital clock display: prints preceding colon and leading 0 LCD.print(":"); if(digits < 10) LCD.print('0'); LCD.print(digits);
int ledw1=9;//pin linea led bianchi e rb posteriore int ledw2=10;//pin linea led bianchi e rb anteriore int leduv=6;//pin linea led rossi, verdi, uv signed int dim; signed int ora; signed int oras; int moonlight=7;//pin led lunari unsigned long time=+(hour()*60*60 + minute()*60 + second());//orario hr,min,sec ridotto in secondi pinMode (ledw1,OUTPUT); pinMode (ledw2, OUTPUT); pinMode (leduv, OUTPUT); pinMode (moonlight,OUTPUT); dim=255/18;//aumento intensità per ogni step ora=45000;//12:30 ora accensione in millisecondi(ore*3600 minuti*60 secondi*1)*1000 oras=81900;//23:15 ora spegnimento in millisecondi(ore*3600 minuti*60 secondi*1)*1000 signed int x=150;//intervallo in millisecondi tra un fade e un altro
/*impostazione per l'accensione deiled lunari*/ if (time > oras+x*2 or time<ora+x){ digitalWrite (moonlight, HIGH); } if (time < oras+x*2 && time>ora+x){ digitalWrite (moonlight, LOW);} delay(10); /*inizio della fase 'Alba' e aumento graduale dell'intensità dell'illuminazione*/ if ( time >= ora&&time <ora+x) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*16); LCD.setCursor(0,1); LCD.print ("Alba 0%"); delay(10); }
if (time >= ora+x&&time<ora+x*2) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*14); LCD.setCursor(0,1); LCD.print ("Alba 6%"); delay(10); }
if (time >= ora+x*2&&time < ora+x*3) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*16); analogWrite (leduv, dim*14); LCD.setCursor(0,1); LCD.print ("Alba 12%"); delay(10); }
if (time >= ora+x*3&&time < ora+x*4) { analogWrite (ledw1,dim*17); analogWrite (ledw2,dim*15); analogWrite (leduv, dim*13); LCD.setCursor(0,1); LCD.print ("Alba 18%"); delay(10); }
if (time >=ora+x*4&&time < ora+x*5) { analogWrite (ledw1,dim*16); analogWrite (ledw2,dim*14); analogWrite (leduv, dim*12); LCD.setCursor(0,1); LCD.print ("Alba 24%"); delay(10); }
if (time >= ora+x*5&&time<ora+x*6) { analogWrite (ledw1,dim*15); analogWrite (ledw2,dim*13); analogWrite (leduv, dim*11); LCD.setCursor(0,1); LCD.print ("Alba 30%"); delay(10); } if (time >= ora+x*6&&time<ora+x*7) { analogWrite (ledw1,dim*14); analogWrite (ledw2,dim*12); analogWrite (leduv, dim*10); LCD.setCursor(0,1); LCD.print ("Alba 36%"); delay(10); }
if (time >= ora+x*7&&time<ora+x*8) { analogWrite (ledw1,dim*13); analogWrite (ledw2,dim*11); analogWrite (leduv, dim*9); LCD.setCursor(0,1); LCD.print ("Alba 42%"); delay(10); }
if (time >= ora+x*8&&time<ora+x*9) { analogWrite (ledw1,dim*12); analogWrite (ledw2,dim*10); analogWrite (leduv, dim*8); LCD.setCursor(0,1); LCD.print ("Alba 48%"); delay(10); }
if (time >= ora+x*9&&time<ora+x*10) { analogWrite (ledw1,dim*11); analogWrite (ledw2,dim*9); analogWrite (leduv, dim*7); LCD.setCursor(0,1); LCD.print ("Alba 54%"); delay(10); } if (time >= ora+x*10 && time<ora+x*11) { analogWrite (ledw1,dim*10); analogWrite (ledw2,dim*8); analogWrite (leduv, dim*6); LCD.setCursor(0,1); LCD.print ("Alba 60%"); delay(10); } if (time >= ora+x*11 && time<ora+x*12) { analogWrite (ledw1,dim*9); analogWrite (ledw2,dim*7); analogWrite (leduv, dim*5); LCD.setCursor(0,1); LCD.print ("Alba 66%"); delay(10); }
if (time >= ora+x*12 && time<ora+x*13) { analogWrite (ledw1,dim*8); analogWrite (ledw2,dim*6); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Alba 72%"); delay(10); } if (time >= ora+x*13 && time<ora+x*14) { analogWrite (ledw1,dim*7); analogWrite (ledw2,dim*5); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Alba 78%"); delay(10); } if (time >=ora+x*14 && time<ora+x*15) { analogWrite (ledw1,dim*6); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Alba 84%"); delay(10); }
if (time >=ora+x*15 && time<ora+x*16) { analogWrite (ledw1,dim*5); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Alba 90%"); delay(10); } /*fase intermedia 'Giorno' nella quale l'illuminazione viene tenuta al massimo dell'intensità impostata e che va dalla fine dell'alba all'inizio della fase di decremento dell'illuminazione 'Tramonto' */ if (time >ora+x*16 && time <oras+x) { analogWrite (ledw1,dim*4); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Giorno"); delay(10); }
|
|
|
|
|
42
|
International / Software / Re: Non riesco a venirne a capo
|
on: November 10, 2012, 06:35:58 am
|
Il tutto si comporta come se i numeri in alcuni casi fossero di segno opposto. Eh... il cranio mio è bello duro  e tutte le domande di Leo hanno una sola risposta che le racchiude: perché sono ignorante e ho tutto da imparare su Arduino quindi il codice è scritto più a senso unito a pochi ricordi di C di quand'ero piccolo che con vera cognizione di causa... ecco perché spesso mi inceppo per stupidaggini che per voi sono scontate. Colgo l'occasione proprio per ringraziarvi per pazienza che avete e il sostegno che mi date. Ora sono col cel, appena arrivo al pc posto il codice intero. Di nuovo grazie a tutti.
|
|
|
|
|
43
|
International / Software / Non riesco a venirne a capo
|
on: November 09, 2012, 08:19:23 pm
|
ragazzi, vi chiedo aiuto in ginocchio, perchè con il seguente codice alle 2 di notte, quindi con 'time' effettivamente maggiore di 'oras+x*19' e minore di 'ora' invece di essere nella fase 'notte' mi rimane nella fase giorno? Anche nella fase 'giorno' qualcosa non va, visto che dovrebbe attivarsi se 'time' è maggiore di 'ora+x*16' e minore di '<oras+x' come in effetti è? Alle 2 di notte questo if dovrebbe risultare falso... e invece no. Non ci sto capendo più nulla. int ledw1=9;//pin linea led bianchi e rb posteriore int ledw2=10;//pin linea led bianchi e rb anteriore int leduv=6;//pin linea led rossi, verdi, uv signed int dim; signed int ora; signed int oras; int moonlight=7;//pin led lunari signed long time=+(hour()*60*60 + minute()*60 + second());//orario hr,min,sec ridotto in secondi pinMode (ledw1,OUTPUT); pinMode (ledw2, OUTPUT); pinMode (leduv, OUTPUT); pinMode (moonlight,OUTPUT); dim=255/18;//aumento intensità per ogni step ora=45000;//12:30 ora accensione in millisecondi(ore*3600 minuti*60 secondi*1)*1000 oras=81900;//23:15 ora spegnimento in millisecondi(ore*3600 minuti*60 secondi*1)*1000 signed int x=150;//intervallo in millisecondi tra un fade e un altro
/*impostazione per l'accensione deiled lunari*/ if (time > oras+x*2 && time<ora+x){ digitalWrite (moonlight, HIGH); } if (time < oras+x*2 && time>ora+x){ digitalWrite (moonlight, LOW);} delay(10); /*inizio della fase 'Alba' e aumento graduale dell'intensità dell'illuminazione*/ if ( time >= ora&&time <ora+x) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*16); LCD.setCursor(0,1); LCD.print ("Alba 0%"); delay(10); }
if (time >= ora+x&&time<ora+x*2) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*14); LCD.setCursor(0,1); LCD.print ("Alba 6%"); delay(10); }................... } /*fase intermedia 'Giorno' nella quale l'illuminazione viene tenuta al massimo dell'intensità impostata e che va dalla fine dell'alba all'inizio della fase di decremento dell'illuminazione 'Tramonto' */ if (time >ora+x*16 && time <oras+x) { analogWrite (ledw1,dim*4); analogWrite (ledw2,dim*4); analogWrite (leduv, dim*4); LCD.setCursor(0,1); LCD.print ("Giorno"); delay(10);.................... /*spegnimento completo dell'illuminazione, fase 'Notte' */ if (time >= oras+x*19 && time<ora) { analogWrite (ledw1,dim*18); analogWrite (ledw2,dim*18); analogWrite (leduv, dim*18); LCD.setCursor(0,1); LCD.print ("Notte"); } delay(10);
|
|
|
|
|