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.