Arduino riceverà una tensione che varia da 0 a 5v sul pin A0. Questa tensione, grazie alla funzione “analogRead()“, che sarà immessa nel codice, viene convertita in un numero, che varia da 0 a 1023. Arduino possiede infatti un convertitore analogico-digitale a 10 bit, e 1023 è il numero massimo che possiamo rappresentare con questa quantità di bit. Questo accade per tutti i segnali immessi in in pin analogico. Nella guida 4 avevo spiegato come ciò avvenisse con un potenziometro.
Ecco quindi lo sketch:
int luminosita=0;
int pinLed=2;
int pinSensore=0;
void setup(){
pinMode(pinLed, OUTPUT);
pinMode(pinSensore,INPUT);
}
void loop(){
luminosita=analogRead (0);
if (sensore<500){
digitalWrite(pinLed, HIGH);
}
else{
digitalWrite(pinLed, LOW);
}
}
all’inizio definisci due costanti: quella per il LED e quella per il pin a cui è collegato il sensore. Dichiara poi una terza variabile che assumerà il valore, che varia da 0 a 1023, e che rappresenta la luminosità. Nel setup inizializza il pin analogico come pin di INPUT e il pin del LED come pin di OUTPUT.
Nel loop, come accennato precedentemente, fai assumere alla variabile il valore letto sul pin analogico. Con la funzione “if“ comunichi ad Arduino che se la variabile contiene un valore minore di 500, il led si accende, in quanto la luminosità è bassa; altrimenti (else) si spegne.
Non mi sono soffermato molto sulla spiegazione della sintassi delle funzioni usate nel codice, in quanto la ho già spiegata nelle precedenti (7^ e 6^) guide.
Nelle prossime guide useremo questo sensore per creare qualcosa di più complesso, come una scala di led che indica la luminosità dell’ambiente.
ciao, nel caso io volessi collegare più led ad una sola fotoresistenza, in modo da accendere più led quando la luce cambia, lo sketch cambierebbe o rimarrebbe intatto?
Lo sketch rimarrebbe lo stesso, dovresti solo collegare in parallelo altri LED. Attenzione però a non superare la corrente massima che Arduino eroga per ogni pin digitale: 40ma.