Überspringen zu Hauptinhalt

LDR

Funktion

Ein lichtabhängiger Widerstand (LDR) reagiert auf die Helligkeit in der Umgebung:
Bei Helligkeit sinkt der Widerstand.
Bei Dunkelheit erhöht sich der Widerstandswert.

Wird die Schaltung des LDRs mit einem Spannungsteiler aufgebaut, kann der Arduino die abfallende Spannung am LDR verarbeiten und z.B. Lampen nach Wunsch anschalten.
Wenn der Spannungsteiler nicht mit einem Festwiderstand, sondern mit einem verstellbaren Widerstand aufgebaut wird, kann je nach Umgebungslicht die Empfindlichkeit feinjustiert werden.

Der Arduino kann an den Pins (A0…A5) analoge Spannungssignale bis 5V verarbeiten. Diese werden in einen digitalen Wert von 0…1023 umgewandelt. Beispiel: Die analoge Spannung 2,5 V ergibt umgerechnet den digitalen Wert 512.

Ideen

  • Wird es draußen dunkel, gehen die Lichter in der Wohnung an.

Bauteile

Eingabe

  • 1x Lichtwiderstand
  • 1x Potentiometer (Alternativ: Festwiderstand)

Hinweis: Der Potentiometer/Festwiderstand sollte so gewählt werden, dass er im Wertebereich des Lichtwiderstandes liegt.
Beispiel: Liegt der Lichtwiderstand bei max. 1 kΩ, sollte der Potentiometer auch bei 1 kΩ liegen.

Ausgabe
Für das Beispiel:

  • 1x LED
  • 1x Festwiderstand 330 Ω

Schaltung

Die LDR ist an 5V und einem analogen Pin (z.B. A0) angeschlossen.
Der Potentiometer ist mit dem mittleren Fuß hinter der LDR und mit dem linken/rechten Fuß an GND angeschlossen.

Die LED ist an der Anode mit einem Widerstand (z.B. 330 Ohm) an einem digitalen Pin (z.B. 7) angeschlossen. Die Kathode ist mit GND verbunden.

Block-Programmierung

Schrift-Programmierung

//Erstelle Variablen mit der Pinbelegung.
int _led_Gelb = 7;
int _input_LDR = A0;

//Lege fest, ob die Pins Ein- oder Ausgänge sind.
void setup()
{
    pinMode(_led_Gelb, OUTPUT);
    pinMode(_input_LDR, INPUT);
    Serial.begin(9600);
}

//Führe das Programm aus.
void loop()
{
    //Eine Wenn-Dann-Ansonsten-Abfrage.
    if ( analogRead(_input_LDR) <= 512 ) {
        digitalWrite(_led_Gelb, HIGH);
    } else {
        digitalWrite(_led_Gelb, LOW);
    }
    
    //Übertrag das Eingangssignals an den Computer.
    Serial.println(analogRead(_input_LDR));
    delay(50);
}

Debug

  • Wurde für den Spannungsteiler der richtige Widerstand gewählt? Messe den Widerstandswert des LDRs im ausgebauten Zustand mit normalen Lichtverhältnissen. Diesen Widerstand benötigst du auch für den Spannungsteiler entweder als Festwiderstand oder als Potentiometer.
  • Du kannst dir die Eingabewerte anzeigen lassen, indem du das Programm „Arduino“ öffnest und dort unter dem Reiter „Werkzeuge“ auf den „Serieller Plotter“ klickst. Wenn der Arduino angeschlossen ist, und der vorgeschlagene Programmcode in Textform übertragen wurde (nicht als Grafikbausteine), werden nun die Werte angezeigt.
An den Anfang scrollen