Una volta assemblato il circuito, si potrà iniziare la scrittura del codice che controllerà la scheda. La parte più sensibile di questo processo sarà la
taratura della fotoresistenza, la quale, ci ritornerà dei valori numerici corrispondenti al livello di luminosità registrato, starà quindi a noi, analizzando questi valori al variare della luminosità, stabile la soglia che determinerà la differenza tra luce e buio.
Il codice inizia con la
dichiarazione dei pin della scheda ai quali è collegato ciascun colore del led RGB (Red, Green, Blue).
const int Red = 3;const int Green = 4;const int Blue = 5;Successivamente all’interno della funzione
setup() dichiararemo che i 3 pin a cui è connesso il led funzioneranno come
output, mentre quello della fotoresistenza con
input.
void setup() {pinMode(Red,OUTPUT);pinMode(Green,OUTPUT);pinMode(Blue,OUTPUT);pinMode(A1,INPUT);Serial.begin(9600);}La funzione
Serial.begin(9600) serve per
inizializzare il monitor seriale, lo strumento, ovvero, attraverso il quale leggeremo i valori della fotoresistenza per poter effettuare la taratura.
Una volta chiuso il setup() inizia la funziona
loop(), quella ovvero, che si ripeterà ciclicamente fino allo spegnimento della scheda. Creiamo una variabile light, all’interno della quale salvare il valore registrato dalla fotoresistenza, tramite la funzione
analogRead().
Ora tramite la struttura di controllo condizionale
if() else(), decidiamo il
valore della soglia che deciderà il comportamento del led (nel nostro esempio troverai 8).
void loop() {int light;light = analogRead(A1)/100;if (light>8) {colora(200,150,150);}else{colora(255,0,0);}Serial.println(light);delay(100);}Per semplificare la colorazione del led, a fine codice è stata inserita una funzione
colora(), a cui potremo direttamente passare i valori RGB di cui abbiamo bisogno (quindi 3 numeri da 0 a 255) .
void colora(int R, int G, int B){analogWrite(Red, R);analogWrite(Green, G);analogWrite(Blue, B);}Le funzioni
Serial.println() e
delay() serviranno rispettivamente per far apparire nel monitor seriale il valore rilevato dalla fotoresistenza, e per inserire un ritardo tra una misura e l’altra, in questo caso 100ms. Di seguito il
codice completo!