Använda en LDR med Arduino och en kontrollswitch för att tända en Arduino
I den här handledningen kommer vi att utforska hur man använder en ljuskänslig resistor (LDR) med en Arduino för att styra ett ljus baserat på omgivande ljusnivåer. LDR:en ändrar sitt motstånd beroende på ljusintensiteten; därmed kan den användas för att upptäcka om det är ljust eller mörkt i en miljö. När ljuset är under en viss tröskel kommer vi att aktivera en utgångspin för att slå på ett ljus.

De primära komponenterna du kommer att behöva inkluderar ett Arduino-kort, en 10k ohm resistor, LDR:n och några hopparledningar. LDR:n kommer att kopplas i en spänningsdelarkonfiguration med resistorn för att läsa den analoga spänningen, som kommer att förändras baserat på ljusintensiteten. Vi kommer att använda denna spänning för att styra en LED eller andra utgångsenheter.
För en visuell demonstration av installationen och koden, se till att kolla in den tillhörande videon (i videon vid 0:10).
Hårdvara förklarad
Ljusberoende resistor (LDR) är en typ av resistor vars resistans minskar med ökande ljusintensitet. Den används vanligtvis i tillämpningar där ljusnivåer behöver övervakas. I vår uppställning kommer LDR att användas för att upptäcka omgivande ljusnivåer och kommer att skicka en motsvarande analog spänning till Arduino.
Arduino kommer att läsa denna spänning via en av sina analoga pinnar och avgöra om den ska slå på eller av den anslutna lampan baserat på en definierad tröskel. Den 10k ohm motståndet används i spänningsdelarkonfigurationen med LDR för att skapa en stabil spänningsutgång som Arduino kan läsa.
Datablad Detaljer
| Tillverkare | Allmän |
|---|---|
| Delnummer | LDR |
| Motstånd (lätt) | 100 - 500 Ω |
| Motstånd (mörkt) | 10 kΩ - 1 MΩ |
| Arbetsspänning | 3,3 V - 5 V |
| Svarstid | 20 ms (typ.) |
| Paket | Genomgående hål |
- Säkerställ korrekta spänningsnivåer; överskrid inte 5V.
- Använd en dragmotstånd för att stabilisera avläsningarna.
- Välj ett lämpligt motståndsvärde (10kΩ) för spänningsdelaren.
- Överväg att använda en kondensator för brusfiltrering om det behövs.
- Håll LDR:n borta från direkta ljuskällor när du testar.
Kopplingsanvisningar

För att ställa in kretsen, börja med att ansluta en terminal av LDR: n till 3,3V strömförsörjningen på Arduino. Den andra terminalen av LDR: n kommer att anslutas till ena änden av 10k ohm motståndet. Den andra änden av motståndet bör anslutas till jorden.
Nästa, skapa en anslutning mellan kopplingen av LDR och motståndet till en analog ingångsstift, såsomA0Denna anslutning kommer att göra det möjligt för Arduino att läsa spänningen. Se till att ansluta jordningen av Arduino till den gemensamma jordningen i din krets för att säkerställa korrekt funktionalitet.
Kodexempel och genomgång
Följande kodsnutt initierar den seriella kommunikationen och läser det analoga värdet från LDR:n. Värdet konverteras sedan till en spänning och skrivs ut på den seriella monitorn.
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
I den här koden är variabelnLDRvaluelagrar den rå analoga avläsningen från LDR. Spänningen beräknas baserat på det maximala analoga värdet (1023) och spänningsreferensen (5V).
Nästa kontrollerar vi om denna spänning är under en tröskel (3V i det här fallet) för att styra en utgångspin.
if(voltage < 3 ){
digitalWrite(10, HIGH); // Turn on the light
}else{
digitalWrite(10, LOW); // Turn off the light
}Här, om den uppmätta spänningen är under 3 volt, ställer vi utgångspinnen (10) till HÖG, vilket slår på ljuset; annars ställs den in på LÅG, vilket stänger av det. Den ständiga kontrollen av ljusförhållandet möjliggör realtidskontroll baserat på omgivande ljusnivåer.
Demonstration / Vad man kan förvänta sig
När du har slutfört kopplingen och laddat upp din kod bör du se spänningsavläsningarna på den seriella monitorn förändras när du varierar ljusintensiteten på LDR:n. Om du täcker LDR:n bör spänningen öka, och när den utsätts för ljus bör den minska. Detta beteende kommer direkt att påverka utgångspinnen, som styr ljuset.
Var försiktig med vanliga fallgropar, såsom flytande ingångar eller felaktiga spänningsnivåer, som kan leda till felaktiga mätningar (i videon vid 12:30).
Videotidsstämplar
- 00:00Introduktion till LDR
- 01:30Hårdvaruinstallation
- 03:45Kodförklaring
- 06:00Köra koden
- 09:15Felsökningstips
//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);
}
Resurser och referenser
Inga resurser än.
Filer📁
Andra filer
-
LDR-kretsdiagram 1
LDR_circuit1.PDF0.04 MB -
LDR-kretsdiagram 2
LDR_circuit2.PDF0.04 MB