Buonasera ragazzi, sto facendo una plafoniera per un acquario, mi servirebbe dimmerare le varie luci per creare effetti tipi alba e tramonto....
stavo provando a scrivere uno sketch non bloccante, ma mi sono un attimo bloccato. io .....
vi posto l'esempio...
//-------led------
int ledrosso = 2;
int ledverde = 3;
int ledblu = 4;
int ledbianchi = 7;
int rele24v = 22;
int rele12v = 24;
int relegrow = 26;
//----------------
int ritardo = 10;
int ValorePWM = 0;
//------ora----------
#include "RTClib.h"
RTC_DS3231 rtc;
int timeOn= 11*60 + 41;
int timeOff= 18*60 + 50;
//--------lcd--------
#include <LiquidCrystal.h>
const int rs = 28, en = 6, d4 = 30, d5 = 5, d6 = 32, d7 = 8;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
//------time----------
int i = 0;
//----------------
int statoEffetti = 0;
int incrementoRosso = 0;
unsigned long timePrevRed = 0;
int FadeRed = 200;
int MaxIncrosso = 225;
int MinIncrosso = 0;
void setup() {
pinMode(ledrosso, OUTPUT);
pinMode(ledverde, OUTPUT);
pinMode(ledblu, OUTPUT);
pinMode(ledbianchi, OUTPUT);
pinMode(rele24v, OUTPUT);
pinMode(rele12v, OUTPUT);
pinMode(relegrow, OUTPUT);
//------------------------
digitalWrite(rele24v,HIGH);
digitalWrite(rele12v,HIGH);
digitalWrite(relegrow,HIGH);
//------------------------
rtc.begin();
lcd.begin(16,2);
Serial.begin(9600);
}
void loop() {
ora_lcd();
DateTime tempo = rtc.now();
int oraAdesso = tempo.hour()*60 + tempo.minute();
if(statoEffetti == 0){
if (oraAdesso == timeOn){
statoEffetti = 1;
}
if (statoEffetti == 1){
controllo_luci();
statoEffetti = 0;
}
}
}
e questa poi e la scheda controllo luci....
void controllo_luci(){
if(millis() - timePrevRed >= FadeRed){
incrementoRosso++;
digitalWrite(rele12v,LOW);
digitalWrite(ledrosso, incrementoRosso);
if(incrementoRosso > MaxIncrosso){
statoEffetti = 2;
}
timePrevRed = millis ();
}
if(statoEffetti == 2){
//led verdi
}
}
non riesco a capire come poter creare un effetto dove per esempio parte la luce rossa poi ad esempio a meta del "fade" di quella rossa si accende il verde per far diventare la luce più gialla e poi si accende piano piano quella bianca per diventare sempre più intensa e far scemare quelle RGB....