Použitie LDR s Arduinom a ovládacieho spínača na osvetlenie Arduina
V tomto tutoriále preskúmame, ako používať svetelne závislý odpor (LDR) s Arduinom na ovládanie svetla na základe úrovne okolitého svetla. LDR mení svoj odpor v závislosti od intenzity svetla; preto sa dá použiť na zistenie, či je v prostredí svetlo alebo tma. Keď je svetlo pod určitým prahom, zapneme výstupný pin na aktiváciu svetla.

Hlavné komponenty, ktoré budete potrebovať, zahŕňajú dosku Arduino, 10k ohmový rezistor, LDR a niekoľko skokových vodičov. LDR bude pripojený v konfigurácii deliča napätia s rezistorom na čítanie analógového napätia, ktoré sa bude meniť v závislosti od intenzity svetla. Toto napätie použijeme na ovládanie LED alebo iných výstupných zariadení.
Pre zabezpečenie vizuálnej ukážky nastavenia a kódu si určite pozrite priložené video (vo videu na 0:10).
Vysvetlenie hardvéru
Svetelne závislý odpor (LDR) je typ odporu, ktorého odpor klesá so zvyšujúcou sa intenzitou dopadajúceho svetla. Bežne sa používa v aplikáciách, kde je potrebné monitorovať úroveň svetla. V našej konfigurácii bude LDR použitý na detekciu úrovne okolitého svetla a bude posielať zodpovedajúce analógové napätie do Arduina.
Arduino prečíta toto napätie cez jeden zo svojich analógových pinov a rozhodne, či zapnúť alebo vypnúť pripojené svetlo na základe definovaného prahu. Rezistor 10k ohm sa používa v konfigurácii deliča napätia s LDR na vytvorenie stabilného napäťového výstupu, ktorý môže Arduino prečítať.
Technické údaje
| Výrobca | Generický |
|---|---|
| Číslo dielu | LDR |
| Odpor (svetlo) | 100 - 500 Ω |
| Odpor (tmavý) | 10 kΩ - 1 MΩ |
| Pracovné napätie | 3,3 V - 5 V |
| Čas odozvy | 20 ms (typ.) |
| Balík | Priechodzí otvor |
- Zabezpečte správne úrovne napätia; neprekračujte 5V.
- Použite odpor s ťahom na stabilizáciu meraní.
- Zvoľte vhodnú hodnotu rezistora (10kΩ) pre napäťový delič.
- Zvážte použitie kondenzátora na filtrovanie šumu, ak je to potrebné.
- Udržujte LDR mimo priame svetelné zdroje počas testovania.
Inštrukcie na zapojenie

Na nastavenie obvodu začnite pripojením jedného terminálu LDR k napájaniu 3,3V na Arduine. Druhý terminál LDR sa pripojí k jednému koncu rezistora 10k ohm. Druhý koniec rezistora by mal byť pripojený k zemi.
Ďalej vytvorte pripojenie medzi spojom LDR a rezistorom k analógovému vstupnému pinu, ako jeA0Toto pripojenie umožní Arduinu čítať napätie. Uistite sa, že pripojíte zem Arduina k spoločnej zemi vášho obvodu, aby ste zabezpečili správnu funkčnosť.
Príklady kódu a návod
Nasledujúci úryvok kódu inicializuje sériovú komunikáciu a číta analógovú hodnotu z LDR. Hodnota sa potom prevedie na napätie a vytlačí na sériový monitor.
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
V tomto kóde je premennáLDRvalueukladá surové analógové čítanie z LDR. Napätie sa vypočíta na základe maximálnej analógovej hodnoty (1023) a referenčného napätia (5V).
Ďalej skontrolujeme, či je toto napätie pod prahovou hodnotou (v tomto prípade 3V), aby sme ovládali výstupný pin.
if(voltage < 3 ){
digitalWrite(10, HIGH); // Turn on the light
}else{
digitalWrite(10, LOW); // Turn off the light
}Tu, ak je namerané napätie pod 3 volty, nastavíme výstupný pin (10) na HIGH, čím zapneme svetlo; inak je nastavený na LOW, čím ho vypneme. Neustále kontrolovanie stavu svetla umožňuje riadenie v reálnom čase na základe úrovne okolitého svetla.
Demonštrácia / Čo očakávať
Po dokončení zapojenia a nahratí vášho kódu by ste mali vidieť, ako sa hodnoty napätia na sériovom monitore menia, keď meníte intenzitu svetla na LDR. Ak zakryjete LDR, napätie by sa malo zvýšiť, a keď je vystavené svetlu, malo by sa znížiť. Toto správanie priamo ovplyvní výstupný pin, ktorý ovláda svetlo.
Buďte opatrní na bežné nástrahy, ako sú plávajúce vstupy alebo nesprávne úrovne napätia, ktoré môžu viesť k chybným meraniam (vo videu o 12:30).
Časové pečiatky videa
- 00:00Úvod do LDR
- 01:30Hardvérové nastavenie
- 03:45Vysvetlenie kódu
- 06:00Spustenie kódu
- 09:15Tipy na riešenie problémov
//Original source: https://www.arduino.cc/en/Tutorial/ReadAnalogVoltage
// This code is used with a video tutorial for RoboJax.com
// Published on August 31, 2017 from Ajax, ON, Canada.
// Written/Edited by A.B.S
/void setup()
{
Serial.begin(9600); // setup serial
pinMode(10, OUTPUT);
}
void loop(){
int LDRvalue = analogRead(A0);
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
float voltage = LDRvalue * (5.0 / 1023.0);
// print out the value you read:
Serial.print("Voltage =");// prints the text "Voltage ="
Serial.print(voltage);// prints the actual voltage
// check if voltage is less than 3, then set pin 10 to high or ON
if(voltage < 3 ){
digitalWrite(10, HIGH);
}else{
digitalWrite(10, LOW); // or keep it OFF when voltage is larger than 3
}
Serial.println();
delay(300);
}
Resources & references
No resources yet.
Files📁
Other files
-
LDR circuit diagrm 1
LDR_circuit1.PDF0.04 MB -
LDR circuit diagrm 2
LDR_circuit2.PDF0.04 MB