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?
/*
* 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*/
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");
}