Search Code

Använda en LDR med Arduino och en kontrollswitch för att tända en Arduino

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.

LDR Illustration and symbol

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

TillverkareAllmän
DelnummerLDR
Motstånd (lätt)100 - 500 Ω
Motstånd (mörkt)10 kΩ - 1 MΩ
Arbetsspänning3,3 V - 5 V
Svarstid20 ms (typ.)
PaketGenomgå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

Wiring LDR with Arduino
Wiring LDR with Arduino

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

Bilder

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
Språk: C++
//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