5.2 Sistema di controllo della luce

5.2.1 Sensore a fotocellula

Aprire il codice 5.2.1Photocell-sensor con Arduino IDE.

#define PhotocecllPin 34  //Definisce il pin del fotoresistore

void setup() {
  //Inizializza la porta seriale
  Serial.begin(9600);
  //Imposta il pin in modalità input
  pinMode(PhotocecllPin,INPUT);
}

void loop() {
  //Legge il valore del fotoresistore
  int ReadValue = analogRead(PhotocecllPin);
  //Stampa il valore. NOTA: la scheda ESP32 è un ADC a 12 bit, il cui intervallo di valori di rilevamento è compreso tra 0 e 4095.
  Serial.print("Valore fotocellula: ");
  Serial.println(ReadValue);
  delay(500);
}

Scegliere la scheda ESP32 Dev Module e la porta COM, quindi caricare il codice.

5458448

Risultato del test:

Aprire il monitor seriale.

Più luminosa è la luce rilevata dal fotoresistore, maggiore sarà il valore.

image-20250417112320453

Un modulo fotoresistore converte il segnale luminoso in segnale elettrico (tensione, corrente e resistenza). Quando la luce colpisce il fotoresistore, più forte è la luce, minore sarà la resistenza, quindi maggiore sarà la tensione VCC che passerà attraverso il fotoresistore.

image

5.2.2 Sistema di controllo della luce

Aprire il codice 5.2.2Light-Control-System con Arduino IDE.

#define PhotocecllPin 34  //Definisce il pin del fotoresistore
#define LED           27  //Definisce il pin del LED

void setup() {
  //Inizializza la porta seriale
  Serial.begin(9600);
  //Imposta il pin del fotoresistore in modalità input 
  pinMode(PhotocecllPin,INPUT);
  //Imposta il pin del LED in modalità output
  pinMode(LED,OUTPUT);
}

void loop() {
  //Legge il valore del fotoresistore
  int ReadValue = analogRead(PhotocecllPin);
  //Stampa il valore. NOTA: la scheda ESP32 è un ADC a 12 bit, il cui intervallo di valori di rilevamento è compreso tra 0 e 4095.
  Serial.print("Valore fotocellula: ");
  Serial.println(ReadValue);
  //Determina:
  //Il valore del fotoresistore >= 800, il LED si spegne
  //Il valore del fotoresistore =< 800, il LED si accende
  if(ReadValue >= 800) {
    digitalWrite(LED,LOW);
    Serial.println("LED SPENTO");
  }
  else{
    digitalWrite(LED,HIGH);
    Serial.println("LED ACCESO");
  }
  delay(100);
}

Scegliere la scheda ESP32 Dev Module e la porta COM, quindi caricare il codice.

5458448

Risultato del test:

Quando il valore del fotoresistore è maggiore di 800 (di giorno), il LED si spegne. Tuttavia, se il valore è inferiore a 800, il LED si accenderà automaticamente.

flo2

image-20250417113142484