Cerca codice

Utilizzare un LDR con Arduino e un interruttore di controllo per accendere un Arduino.

Utilizzare un LDR con Arduino e un interruttore di controllo per accendere un Arduino.

In questo tutorial, esploreremo come utilizzare un Resistor Dipendente dalla Luce (LDR) con un Arduino per controllare una luce in base ai livelli di luce ambientale. L'LDR cambia la sua resistenza a seconda dell'intensità della luce; pertanto, può essere utilizzato per rilevare se in un ambiente è chiaro o scuro. Quando la luce è al di sotto di una certa soglia, accenderemo un pin di uscita per attivare una luce.

LDR Illustration and symbol

I componenti principali di cui avrai bisogno includono una scheda Arduino, una resistenza da 10k ohm, l'LDR e alcuni cavi jumper. L'LDR sarà collegato in una configurazione di partitore di tensione con la resistenza per leggere la tensione analogica, che cambierà in base all'intensità della luce. Useremo questa tensione per controllare un LED o altri dispositivi di output.

Per una dimostrazione visiva della configurazione e del codice, assicurati di controllare il video associato (nel video a :10).

Hardware Spiegato

Il resistore dipendente dalla luce (LDR) è un tipo di resistore la cui resistenza diminuisce con l'aumentare dell'intensità della luce incidente. È comunemente utilizzato in applicazioni in cui è necessario monitorare i livelli di luce. Nel nostro setup, l'LDR verrà utilizzato per rilevare i livelli di luce ambientale e invierà una tensione analogica corrispondente all'Arduino.

L'Arduino leggerà questa tensione tramite uno dei suoi pin analogici e deciderà se accendere o spegnere la luce collegata in base a una soglia definita. Il resistore da 10k ohm è utilizzato nella configurazione del partitore di tensione con l'LDR per creare un'uscita di tensione stabile che l'Arduino può leggere.

Dettagli della scheda tecnica

ProduttoreGenerico
Numero di parteLDR
Resistenza (leggera)100 - 500 Ω
Resistenza (scura)10 kΩ - 1 MΩ
Tensione di lavoro3,3 V - 5 V
Tempo di risposta20 ms (tip.)
PacchettoPassante

  • Assicurati di mantenere i livelli di tensione appropriati; non superare i 5V.
  • Utilizzare una resistenza di pull-down per stabilizzare le letture.
  • Scegli un valore di resistore adatto (10kΩ) per il partitore di tensione.
  • Considera l'uso di un condensatore per il filtraggio del rumore se necessario.
  • Tieni il LDR lontano da fonti di luce diretta durante il test.

Istruzioni di cablaggio

Wiring LDR with Arduino
Wiring LDR with Arduino

Per impostare il circuito, inizia collegando un terminale del LDR all'alimentazione a 3,3V sull'Arduino. L'altro terminale del LDR si collegherà a un'estremità del resistore da 10k ohm. L'altra estremità del resistore dovrebbe essere collegata a terra.

Successivamente, crea una connessione tra il giunto del LDR e il resistore a un pin di ingresso analogico, comeA0Questa connessione permetterà all'Arduino di leggere la tensione. Assicurati di collegare il terreno dell'Arduino al terreno comune del tuo circuito per garantire un corretto funzionamento.

Esempi di codice e guida passo passo

Il seguente frammento di codice inizializza la comunicazione seriale e legge il valore analogico dal LDR. Il valore viene quindi convertito in una tensione e stampato sul monitor seriale.

int LDRvalue = analogRead(A0); // Read the analog value from LDR
float voltage = LDRvalue * (5.0 / 1023.0); // Convert to voltage
Serial.print("Voltage ="); // Print label
Serial.print(voltage); // Print actual voltage

In questo codice, la variabileLDRvaluememorizza la lettura analogica grezza dal LDR. La tensione è calcolata in base al valore analogico massimo (1023) e al riferimento di tensione (5V).

Successivamente, verifichiamo se questa tensione è al di sotto di una soglia (3V in questo caso) per controllare un pin di uscita.

if(voltage < 3 ){ 
  digitalWrite(10, HIGH); // Turn on the light
}else{
  digitalWrite(10, LOW); // Turn off the light
}

Qui, se la tensione misurata è inferiore a 3 volt, impostiamo il pin di uscita (10) su HIGH, accendendo la luce; altrimenti, è impostato su LOW, spegnendola. Il controllo costante della condizione della luce consente un controllo in tempo reale basato sui livelli di luce ambientale.

Dimostrazione / Cosa Aspettarsi

Una volta completato il cablaggio e caricato il codice, dovresti vedere le letture di tensione sul monitor seriale cambiare man mano che vari l'intensità della luce sul LDR. Se copri il LDR, la tensione dovrebbe aumentare e quando esposto alla luce, dovrebbe diminuire. Questo comportamento influenzerà direttamente il pin di uscita, che controlla la luce.

Fai attenzione ai comuni errori, come ingressi flottanti o livelli di tensione errati, che possono portare a letture errate (nel video alle 12:30).

Timestamp video

  • 00:00Introduzione al LDR
  • 01:30Configurazione hardware
  • 03:45Spiegazione del codice
  • 06:00Eseguire il codice
  • 09:15Suggerimenti per la risoluzione dei problemi

Immagini

Wiring LDR with Arduino
Wiring LDR with Arduino
An LDR
An LDR
LDR Illustration and symbol
LDR Illustration and symbol
14-Using an LDR with an Arduino and a control switch for a light
Lingua: C++
/*
 * Fonte originale: https://www.arduino.cc/en/Tutorial/ReadAnalogVoltage
 * 
 * Questo codice viene utilizzato con un video tutorial per RoboJax.com
 * Pubblicato il 31 agosto 2017 da Ajax, ON, Canada.
 * Scritto/Edito da A.B.S
 */
/void setup()

{

  Serial.begin(9600); // Imposta seriale
  pinMode(10, OUTPUT);
}



void loop(){

  int LDRvalue = analogRead(A0);
 // Converti la lettura analogica (che va da 0 a 1023) in una tensione (0 - 5V):
  float voltage = LDRvalue * (5.0 / 1023.0);
 // Stampa il valore che hai letto:
  Serial.print("Voltage ="); // stampa il testo "Tensione ="
  Serial.print(voltage); // stampa la tensione effettiva

 // controllare se la tensione è inferiore a 3, quindi impostare il pin 10 su alto o ON
  if(voltage < 3 ){
    digitalWrite(10, HIGH);
  }else{
    digitalWrite(10, LOW); // o tenerlo spento quando voltage è maggiore di 3
  }
  Serial.println();
  delay(300);

}

Risorse e riferimenti

Nessuna risorsa ancora.

File📁

Nessun file disponibile.