Arduino – LDR uitlezen
In dit voorbeeld gaan we een LDR uitlezen, dit is een lichtgevoelige weerstand.
Hardware:
De LDR
De weerstand van de LDR is afhankelijk van de hoeveelheid licht. De afkorting LDR betekend lightdepent resistance. In het donker is de weerstand erg groot. Dan kan het wel tot 10 000 000 ohm. Als er fel licht op de LDR valt, is de weerstand kleiner. (100 ohm, afhankelijk van het type LDR)
Een LDR kan je gebruiken als sensor in een lichtsterktemeter. Hoe meer licht er op de LDR valt:
– des te kleiner de weerstand van de LDR
– en des te groter is de stroomsterkte van de LDR.
Om de LDR uit te lezen heb je een vaste weerstand nodig (bijvoorbeeld 220 ohm of 1K ohm), de weerstand functioneert dan als een spanningsdeler, zo kun je de spanning aflezen via de analoge uitgang (waarde 5v = 1024, waarde 0v = 0)
Sluit de LDR aan volgens onderstaand schema:
Gebruik daarbij deze code om de ‘spannings’ waarde vanaf de analoge uitgang te meten via de seriële monitor:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// configureer hier de LDRsensor pin, deze sluiten we hier // aan op de analoge poort 0 van de arduino: A0 int LDRsensor = A0; void setup() { Serial.begin(9600); // zet seriele poort aan op 9600 baud. } // deze loop wordt continu herhaald void loop() { // print LDR waarde via seriele monitor Serial.print("LDR waarde: "); Serial.print(analogRead(LDRsensor)); Serial.println(""); delay(100); // wacht 100 ms } |
Let op: De waarde is afhankelijk van de gebruikte weerstand, bij 220 ohm, is de waarde bij veel licht >200 en weinig licht <70.
Het resultaat:
LDR + LED
Nu gaan we schakelen via een LEDje, raadpleeg de waarden die weergegeven worden en zo kun je de ’triggerwaarde’ instellen voor licht/donker.
We sluiten het LEDje erbij aan volgens het volgende schema op de digitale aansluiting van de arduino:
Hierbij het voorbeeldscript om het LEDje te laten branden als het licht onder een drempelwaarde valt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
// configureer hier de LDRsensor pin, deze sluiten we hier // aan op de analoge poort 0 van de arduino: A0 // Sluit een LEDje aan op de digitale aansluiting 3 int ledPin = 3; int LDRsensor = A0; int Drempelwaarde = 60; void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); // zet seriele poort aan op 9600 baud. } // deze loop wordt continu herhaald void loop() { // lees de LDR waarde uit en zet deze in een variable. int LDRwaarde = analogRead(LDRsensor); // print LDR waarde via seriele monitor Serial.print("LDR waarde: "); Serial.print(LDRwaarde); Serial.println(""); if (LDRwaarde < Drempelwaarde) { // wat te doen als LDRwaarde < Drempelwaarde digitalWrite(ledPin, HIGH); //zet LED aan } else { // wat te doen als LDRwaarde > Drempelwaarde digitalWrite(ledPin, LOW); //zet LED uit } delay(100); // wacht 100 ms } |
Nu nog even de LED status etc. toevoegen via de seriële monitor, dat maakt deze code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
// configureer hier de LDRsensor pin, deze sluiten we hier // aan op de analoge poort 0 van de arduino: A0 // Sluit een LEDje aan op de digitale aansluiting 3 int ledPin = 3; int LDRsensor = A0; int Drempelwaarde = 60; void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); // zet seriele poort aan op 9600 baud. } // deze loop wordt continu herhaald void loop() { // lees de LDR waarde uit en zet deze in een variable. int LDRwaarde = analogRead(LDRsensor); // print LDR waarde en LED status via seriele monitor Serial.print("LDR waarde: "); Serial.print(LDRwaarde); Serial.print(" / LED status: "); if (LDRwaarde < Drempelwaarde) { // wat te doen als LDRwaarde < Drempelwaarde digitalWrite(ledPin, HIGH); //zet LED aan Serial.print("AAN"); } else { // wat te doen als LDRwaarde > Drempelwaarde digitalWrite(ledPin, LOW); //zet LED uit Serial.print("UIT"); } delay(100); // wacht 100 ms Serial.println(""); } |
Het resulaat: