Nota

Ciao, benvenuto nella community SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci Raspberry Pi, Arduino ed ESP32 con altri appassionati.

Perché unirsi?

  • Supporto Esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara & Condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime Esclusive: Ottieni l’accesso anticipato agli annunci di nuovi prodotti e anteprime esclusive.

  • Sconti Speciali: Goditi sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni e Concorsi Festivi: Partecipa a concorsi e promozioni festive.

👉 Pronto a esplorare e creare con noi? Clicca [Qui] e unisciti oggi stesso!

Array Sensibile alla Luce

Questo programma converte le letture di un fotoresistore in un numero corrispondente di LED illuminati, creando un semplice indicatore di luminosità.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

È sicuramente conveniente acquistare un kit completo, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

Elite Explorer Kit

300+

Elite Explorer Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE COMPONENTI

LINK ACQUISTO

Arduino Uno R4 WiFi

-

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistenza

ACQUISTA

LED

ACQUISTA

Fotoresistore

ACQUISTA

Collegamenti

../_images/04_light_sensitive_array_bb.png

Schema Elettrico

../_images/04_light_sensitive_array_schematic.png

Codice

Nota

  • Puoi aprire il file 04_light_sensitive_array.ino nel percorso elite-explorer-kit-main\fun_project\04_light_sensitive_array direttamente.

  • Oppure copia questo codice nell’Arduino IDE.

04_light_sensitive_array.ino
 1/*
 2  The code reads the ambient light level through a photoresistor and lights up
 3  a certain number of LEDs based on the light level. The LEDs serve as a "light level bar."
 4
 5  Board: Arduino Uno R4 
 6  Component: Photoresistor and LED
 7*/
 8
 9// Constants for the number of LEDs and their pins
10const int NbrLEDs = 8;
11const int ledPins[] = { 5, 6, 7, 8, 9, 10, 11, 12 };
12
13// Pin for the photoresistor
14const int photocellPin = A0;
15
16// Variables to store sensor and LED level values
17int sensorValue = 0;  // value read from the sensor
18int ledLevel = 0;     // sensor value converted into LED 'bars'
19
20void setup() {
21  // Initialize all LED pins as outputs
22  for (int led = 0; led < NbrLEDs; led++) {
23    pinMode(ledPins[led], OUTPUT);
24  }
25}
26
27void loop() {
28  sensorValue = analogRead(photocellPin);              // Read the ambient light level from the photoresistor
29  ledLevel = map(sensorValue, 300, 1023, 0, NbrLEDs);  // Map the sensor value to the number of LEDs to be lit
30
31  // Update the state of each LED based on the mapped value
32  for (int led = 0; led < NbrLEDs; led++) {
33    if (led < ledLevel) {
34      digitalWrite(ledPins[led], HIGH);  // Turn ON LEDs that are below the level
35    } else {
36      digitalWrite(ledPins[led], LOW);  // Turn OFF LEDs that are above the level
37    }
38  }
39}

Come funziona?

Ecco una spiegazione passo-passo del codice:

  1. Definizioni di Costanti e Variabili:

    NbrLEDs: Definisce la presenza di 8 LED. ledPins[]: I LED sono collegati ai pin 5-12 di Arduino. photocellPin: Il fotoresistore è collegato al pin A0 di Arduino. sensorValue: Questa variabile memorizza il valore letto dal fotoresistore. ledLevel: Questa variabile memorizza il numero di LED accesi in base alla conversione del valore del sensore.

  2. setup():

    Configura i pin 5-12 come output per controllare i LED.

  3. loop():

    Legge il valore analogico del fotoresistore dal pin A0, generalmente compreso tra 0 e 1023. Usa la funzione map per mappare il valore del fotoresistore da un intervallo di 300-1023 a un intervallo di 0-8. Questo significa che se la lettura dal fotoresistore è 300, nessun LED sarà acceso; se la lettura è 1023 o superiore, tutti gli 8 LED saranno accesi.

    Il successivo ciclo for controlla ogni LED. Se l’indice è inferiore a ledLevel, il LED sarà acceso; altrimenti, sarà spento.