Go Down

Topic: Non riesco a venirne a capo (Read 3 times) previous topic - next topic

Michele Menniti

allora quello segnalato da Gingardu è un errore in quanto ha invertito i due operatori
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

leo72

Sicuramente è un errore. Poi ci possono magari essere anche errori logici, ma questi sono più difficili da interpretare se non si è nel "cranio" dell'autore del sorgente  :smiley-yell:
Ad esempio, lo spezzone di codice dove sta? E' racchiuso nel loop()? Se sì, perché ad ogni ciclo imposta i pin in output?
Perché usa variabili di tipo int per numeri che possono arrivare max a 59? Perché specifica "signed" quando è implicito che un "int" sia un "signed int"? Perché vedo delay(10) infilati da tutte le parti? A che serve aspettare 10 ms dopo un digitalWrite?

Dandovino

Il tutto si comporta come se i numeri in alcuni casi fossero di segno opposto. Eh... il cranio mio è bello duro  :smiley-mr-green: 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.

Dandovino

ecco lo sketch, diviso in due parti sennò non mi entrava, abbiate pazienza e... grazie davvero a tutti
Code: [Select]
/*
/*
* 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);
}

Dandovino

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

}

Go Up