Buongiorno a tutti ho questo sketch:
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 rtc;
int oraAlba=8;
int minAlba=0;
long albas;
int durataAlbas=720;
int oraTramonto=16;
int minTramonto=0;
long tramontos;
int durataTramontos=720;
long nows;
int delayR=0;
int delayG=120;
int delayB=240;
int delayUV=360;
int delayW=360;
int pinR=2;
int pinG=3;
int pinB=4;
int pinW=5;
int pinUV=6;
void setup(){
Serial.begin(57600);
Wire.begin();
rtc.begin();
pinMode(pinR,OUTPUT);
pinMode(pinG,OUTPUT);
pinMode(pinB,OUTPUT);
pinMode(pinW,OUTPUT);
pinMode(pinUV,OUTPUT);
}
void loop(){
albas=oraAlba3600+minAlba60;
tramontos=oraTramonto3600+minTramonto60;
DateTime now=rtc.now();
nows=now.hour()3600+now.minute()60+now.second();
if (nows<albas||nows>tramontos+durataTramontos){
digitalWrite(pinR,LOW);
digitalWrite(pinG,LOW);
digitalWrite(pinB,LOW);
digitalWrite(pinUV,LOW);
digitalWrite(pinW,LOW);
}
if (nows>albas && nows+delayR<albas+durataAlbas){
analogWrite(pinR,255(float)(((albas+durataAlbas)-nows)/(durataAlbas-delayR)));
}
if (nows>albas && nows+delayG<albas+durataAlbas){
analogWrite(pinG,255(float)(((albas+durataAlbas)-nows)/(durataAlbas-delayG)));
}
if (nows>albas && nows+delayB<albas+durataAlbas){
analogWrite(pinB,255*(float)(((albas+durataAlbas)-nows)/(durataAlbas-delayB)));
}
if (nows>albas && nows+delayUV<albas+durataAlbas){
analogWrite(pinUV,255*(float)(((albas+durataAlbas)-nows)/(durataAlbas-delayUV)));
}
if (nows>albas && nows+delayW<albas+durataAlbas){
analogWrite(pinW,255*(float)(((albas+durataAlbas)-nows)/(durataAlbas-delayW)));
}
if (nows>albas+durataAlbas && nows<tramontos){
digitalWrite(pinR,HIGH);
digitalWrite(pinG,HIGH);
digitalWrite(pinB,HIGH);
digitalWrite(pinUV,HIGH);
digitalWrite(pinW,HIGH);
}
if (nows>tramontos && nows<tramontos+durataTramontos-delayR){
analogWrite(pinR,255*(1-(float)(((tramontos+durataTramontos)-nows)/(durataTramontos-delayR))));
}
if (nows>tramontos && nows<tramontos+durataTramontos-delayG){
analogWrite(pinG,255*(1-(float)(((tramontos+durataTramontos)-nows)/(durataTramontos-delayG))));
}
if (nows>tramontos && nows<tramontos+durataTramontos-delayB){
analogWrite(pinB,255*(1-(float)(((tramontos+durataTramontos)-nows)/(durataTramontos-delayB))));
}
if (nows>tramontos && nows<tramontos+durataTramontos-delayUV){
analogWrite(pinUV,255*(1-(float)(((tramontos+durataTramontos)-nows)/(durataTramontos-delayUV))));
}
if (nows>tramontos && nows<tramontos+durataTramontos-delayW){
analogWrite(pinW,255*(1-(float)(((tramontos+durataTramontos)-nows)/(durataTramontos-delayW))));
}
}
i miei problemi sono molteplici:
1 se attacco la corrente direttamente ad arduino dopo aver caricato lo sketch, lo sketch non eseggue nulla, devo attacarlo con usb per farlo funzionare,
2: dovrebbe accendersi alle 8 e invece alle 8 inizia a lampeggiare poi si spegne e io devo staccare usb e riattaccarla per farlo andare e poi fa il iciclo giusto fino a spegnimento poi al mattino solita storia, aiutatemi a capire per favore cosa non va, rtc funziona bene da la dat corrente del pc