Pages: 1 [2] 3 4   Go Down
Author Topic: Non riesco a venirne a capo  (Read 2272 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 113
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 113
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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'
Code:
/*
 * 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);
  

}
Logged

Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sembra strano l'ultimo if   smiley-eek-blue
a me pare piu corretto uno solo   o ripeti l'intera "strofa"
o metti uno   o l'altro

if (time >= oras+x*19 && time<=86399)
if (time <ora)

altrimenti se li vuoi mettere tutti e due ripeti tutto

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"); }
 delay(10);


if (time <ora)
  {
  analogWrite (ledw1,dim*18);
  analogWrite (ledw2,dim*18);
  analogWrite (leduv, dim*18);
  LCD.setCursor(0,1);
  LCD.print ("Notte"); }
 delay(10);

oppure fai un or


if (time >= oras+x*19 && time<=86399 || time <ora)
  {
  analogWrite (ledw1,dim*18);
  analogWrite (ledw2,dim*18);
  analogWrite (leduv, dim*18);
  LCD.setCursor(0,1);
  LCD.print ("Notte"); }
 delay(10);

« Last Edit: November 10, 2012, 12:24:04 pm by gingardu » Logged


Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

Offline Offline
Full Member
***
Karma: 0
Posts: 113
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

infatti ho fatto così
Code:
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"); }
Logged

Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

se hai la seriale ancora libera (pin 0-1)  pui sempre mettere  dei serial print momentanei per vedere che succede man mano che funziona tutto,

ci sono solo 3-4 cose che trasformano "involontariamente " un numero positivo in negativo

overflow,

moltiplicarlo per un numero negativo  ecc,

altra cosa,...indagherei  sugli if: se un if  viene eseguito,  e attiva o modifica qualcosa,  questa cosa rimarra sempre attiva  se non gli metti un "contro" if

esempio: se metto
if (millis () > 1000 && millis () < 2000)  digitalvrite (7, HIGH);

questa riga lascera inevitabilmente il pin 7 sempre alto  se non metto qualcosa che lo riporti allo stato iniziale
« Last Edit: November 11, 2012, 02:39:12 am by gingardu » Logged


Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

Offline Offline
Full Member
***
Karma: 0
Posts: 113
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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...
Logged

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hai provato a guardare la libreria Time ? E' piuttosto potente e completa, e supporta l'uso di rtc su i2c come sorgente di tempo.
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 313
Posts: 21645
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se hai un RTC, potresti pensare ad usare un timestamp al posto della semplice conversione di ore:minuti:secondi in un numero indicante i secondi dalla mezzanotte.

Un timestamp è un numero molto grande (unsigned long, 32 bit), che tiene il numero di secondi a partire da un dato istante. In questo modo il timestamp non solo contiene le ore:minuti:secondi ma gestisce anche il giorno.
In questo modo non hai più problemi di orari che scavalcano la mezzanotte.

Se vuoi approfondire puoi scaricarti la mia libreria swRTC, che contiene un algoritmo per calcolare il timestamp da un dato istante e viceversa.
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 113
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Code:
/*
 * 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);
 

}

 
 
   
   
   
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 313
Posts: 21645
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sì, il timestamp è una funzione della libreria.
Logged


Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

abs() ritorna il valore assoluto di un numero. Semanticamente equivale a:

if x < 0
  return -x
else
  return x
endif

Non ho letto bene il tuo codice, ma mi pare che di fronte ad una variabile che assume valori _inaspettatamente_ negativi la soluzione non sia "togliere il segno meno", ma capire perché ciò avviene.
smiley
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 113
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hai ragione, ma rileggendo tutto il codice non mi pare di vedere possibilità di far divenire un numero positivo un numero negativo...  smiley-slim
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 113
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

non ce la faccio più, sta diventando ridicolo, come può in questo codice diventare vero l'if della fase 'giorno' passata la mezzanotte dove invece dovrebbe essere assolutamente falso?
Code:
/*
 * 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);
 Serial.begin(9600);
 
   DS1307RTC(); 
}

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);
}
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
   float dim;
   int ora;
   int oras;
   int moonlight=7;//pin led lunari
   int  time=(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
LCD.clear();
/*impostazione per l'accensione deiled lunari*/
 
Code:
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");

}
Logged

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Io proverei a stampare sulla seriale i valori all'interno delle condizioni if(). Cioè time e i due valori calcolati con cui lo confronti.
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 113
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

allora, se davanti a ora e oras metto 'int' da vera la fase giorno sia di giorno che di notte, se metto 'long' da vera la fase di notte sempre in entrambe i casi... tra un pò spacco tutto... è illogico!!!
Logged

Pages: 1 [2] 3 4   Go Up
Jump to: