Progetto 3 Sensore Fotoresistenza

Descrizione
La fotoresistenza è una resistenza speciale realizzata con materiali semiconduttori come CdS o setto di Selenio. La superficie è inoltre rivestita con resina impermeabile, che ha un effetto fotoconducente. È sensibile alla luce ambientale. La sua resistenza varia in base alle diverse intensità luminose.
Utilizziamo le caratteristiche della fotoresistenza per progettare il circuito e generare il modulo fotoresistenza.
Collegando il pin del segnale del modulo fotocellula alla porta Analogica, scoprirai che più forte è l’intensità luminosa, maggiore è la tensione della porta analogica e maggiore è il valore analogico.
Al contrario, più debole è l’intensità luminosa, minore è la tensione della porta analogica, minore è il valore analogico.
In base a ciò, possiamo utilizzare il modulo fotocellula per leggere il valore analogico e ottenere così l’intensità della luce ambientale.
Specifiche

Resistenza: 5K ohm-0.5Mohm
Tipo di interfaccia: analogica
Tensione di lavoro: 3.3V-5V
Installazione facile: con fori di fissaggio a vite
Spaziatura dei pin: 2.54mm
Componenti

Diagramma di collegamento:

I due sensori fotoresistenza sono collegati con A1 e A2, quindi completare l’esperimento tramite la fotoresistenza collegata ad A1. Leggiamo il suo valore analogico.
Codice di prova
/*
keyestudio Mini Tank Robot V2.1
lezione 3.1
fotocellula
http://www.keyestudio.com
*/
int sensorPin = A1; // seleziona il pin di ingresso per la fotocellula
int sensorValue = 0; // variabile per memorizzare il valore proveniente dal sensore
void setup()
{
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(sensorPin); // leggi il valore dal sensore:
Serial.println(sensorValue); // la porta seriale stampa il valore di resistenza
delay(500);
}
//******************************************************
Risultato della prova
Carica il codice sulla scheda di sviluppo, apri il monitor seriale e verifica se il suo valore diminuisce quando copri la fotoresistenza. Tuttavia, il valore aumenta quando è scoperta.

Spiegazione del codice
analogRead(sensorPin): leggi il valore analogico della fotoresistenza tramite le porte analogiche.
Serial.begin(9600): Inizializza la porta seriale, la velocità di trasmissione della comunicazione seriale è 9600.
Serial.println: La porta seriale stampa e va a capo.
Pratica di estensione
Abbiamo imparato come leggere il valore della fotoresistenza. Combiniamo la fotoresistenza con un LED e osserviamo lo stato del LED.

PWM limita la luminosità, quindi il LED è collegato ai pin PWM. Collega il LED al pin 10, mantieni il pin della fotoresistenza invariato, quindi progetta il codice:
/*keyestudio Mini Tank Robot V2.1
lezione 3.2
fotocellula-uscita analogica
http://www.keyestudio.com
*/
int analogInPin = A1; // pin di ingresso analogico a cui è collegata la fotocellula
int analogOutPin = 10; // pin di uscita analogica a cui è collegato il LED
int sensorValue = 0; // valore letto dal potenziometro
int outputValue = 0; // valore in uscita al PWM (uscita analogica)
void setup()
{
Serial.begin(9600);
}
void loop()
{
// leggi il valore di ingresso analogico:
sensorValue = analogRead(analogInPin);
// mappalo nell'intervallo dell'uscita analogica:
outputValue = map(sensorValue, 0, 1023, 0, 255);
// cambia il valore di uscita analogica:
analogWrite(analogOutPin, outputValue);
// attendi 2 millisecondi prima del prossimo ciclo affinché il convertitore
// analogico-digitale si stabilizzi dopo l'ultima lettura:
Serial.println(sensorValue); // la porta seriale stampa il valore della fotoresistenza
delay(2);
}
//***************************************************************
Carica il codice, premi con la mano per osservare la luminosità del LED.