Input:
- PIN qulunque (anche analogico) da leggere con pulseIn.
Questo sketch utilizza la libreria aero per implementare tramite la funzione toggleRead un interruttore di accensione generale per le luci. Nell’aereo di Cirso e’ prevista una state machine che gestisce le transizioni tra On / Off con delle dissolvenze. toggleRead utilzza millis per non bloccare il processore, il default e’ fare una lettura del canale ogni mezzo secondo.
/* Toggle con transizioni tra On | OFF con pulseIn
Funzione
Sketch di esempio per accensione spegnimento di tutto l'impianto luci
tramite un interruttore a due posizioni della radio utilizzando
la funzione toggleRead(pin) basata su pulseIn.
Input:
1 pulseIn su A0 per accensione / spegnimento luci
Il codice e' blocking fin tanto che il segnale passa da RISE a FALL
quindi blocca per 1-2ms a ogni esecuzione. Con la variabile freq
si imposta ogni quanto fare una lettura (default = 500ms).
*/
#define dEBUG
#include <common.h>
#include <aero.h>
void setup() {
Serial.begin(9600);
} ;
void loop() {
if (toggleRead(A0)) { // Numero del PIN a cui e' collegato il canale dell'interruttore
//if (toggleRead(A0,100)) { // Numero del PIN, frequenza di aggiornamento in milli sec
// Luci accese
Serial.println("Luci On ");
} else {
// luci spente
Serial.println("Luci Off ");
} ;
}
Invece di un ciclo if si puo’ usare anche un while, oppure implementare nelle FSM delle luci un caso per [luci spente] / [luci accese]. Da questo e’ relativamente semplice gestire sia le transizioni che eventuali flight modes per abilitare schemi diversi per le luci.