Io ho guardato ma non c'è scritto nulla in merito, purtroppo però un secondo arduino non è fattibile.
La variabile è di tipo float.
In pratica il FW è suddiviso così:
Task 100ms: UpdateRTC(); --> Ricava ore-minuti e secondi
OnOffRGB(); --> Gestisce l'alba e tramonto di 4 strisce leds
ReadSwitch(); --> Lettura in manuale di 8 interruttori
Task 1000ms: ReadTemperatureSensor1(); --> Lettura primo sensore
ReadTemperatureSensor2(); --> Lettura secondo sensore
ShowCurrent(); --> Misura la corrente che passa in 8 Relays
CheckTemp(); --> Gestione/Attivazione di 4 ventole in base alla temperatura rilevata
Task 3000ms: httpSendData(); --> Invio/Ricezione dati WiFi
ManageRelaySwitch(); --> Gestione remota relays
CheckWiFiConnection(); --> Gestione della connessione wifi...Se manca il segnale continua in automatico
SyncPin(); --> Se il wifi riprende a funzionare sincronizzo tutti gli stati dei relays
Il problema è nella funzione OnOffRGB(); questa funzione in base all'ora fa il fade tra due soglie calcolato su 100ms e deve essere preciso.
In parole semplici se parto con duty= 85% e dalle 17:00 alle 18:00 voglio passare al 65% gradualmente lui calcola gli step in modo da avere una graduale diminuzione della luminosità.
Se elimino tutte le funzioni inerenti il wifi funziona a meraviglia mentre con quellle attive sballa tutto il fade. Ho inserito nella funziona da 100ms un semplice
- Codice: Seleziona tutto
ledState = !ledState;
digitalWrite(LEDTEST, ledState);
e si vede chiaramente che per un un certo periodo ho un segnale a 5Hz e poi si allungano i tempi, poi ritorna a 5Hz e così via.