### 5.2 Sistema di controllo della luce #### 5.2.1 Sensore a fotocellula Aprire il codice **5.2.1Photocell-sensor** con Arduino IDE. ```c #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](../media/5458448.png) **Risultato del test:** Aprire il monitor seriale. Più luminosa è la luce rilevata dal fotoresistore, maggiore sarà il valore. ![image-20250417112320453](../media/image-20250417112320453.png) 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](../media/cou2.png) #### 5.2.2 Sistema di controllo della luce Aprire il codice **5.2.2Light-Control-System** con Arduino IDE. ```c #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](../media/5458448.png) **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](../media/flo2.png) ![image-20250417113142484](../media/image-20250417113142484.png)