Zum Inhalt springen
Nachtlicht mit Arduino – LED und LDR Fotowiderstand

Nachtlicht mit Arduino

    Jonas hat mir geschrieben und gefragt, wie man eine LED per Fotowiderstand dimmen könnte. Da machen wir doch gleich ein schönes Projekt draus: ein Nachtlicht mit Arduino.

    Wer kenn das nicht?! Man muss nachts kurz raus und bleibt im Dunklen mit dem kleinen Zeh (womit sonst) an der Schrankkante hängen. Aber das muss ja nicht sein. Abhilfe schafft ein kleines Nachtlicht, das sich im Dunklen selbst einschaltet.

    Schaltung

    Arduino Nachtlicht Schaltplan mit LED und Fotowiderstand (LDR)

    Die Schaltung ist relativ einfach. Das kurze Bein einer LED (Kathode) ist mit dem GND auf der einen, und über einen 220Ω-Widerstand mit dem Digitalen Pin 3 des Arduino-Boards verbunden. Pin 3 ist ein PWM-Pin, wir können hier also die Leuchtstärke der LED per analogWrite-Befehl beeinflussen. Den zweiten Teil der Schaltung bildet eine Reihenschaltung eines 100kΩ-Widerstandes mit einem Fotowiderstand (LDR). Der Widerstand ist mit der LDR abgewanden Seite mit dem GND verbunden, der LDR mit dem 5V+. Die Verbindungsstelle ist am Analog Input 5 verbunden.


    Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


    Bauteile

    Erklärungen zum Code: Nachtlicht mit Arduino

    Im Code werden erstmal die zwei Pins ledPin und ldrPin deklariert. Im Setup starten wir nur die serielle Kommunikation. Damit lassen sich später die Werte des Fotowiderstandes im seriellen Monitor anzeigen.

    Im Loop lesen wir als Erstes den Wert des Fotowiderstandes in die Variable ldrWert per analogRead aus. Der Wert wird dann an die serielle Schnittstelle gesendet. Wenn du das Programm startest, öffne den seriellen Monitor der Arduino-Software und gucke, welche Werte angezeigt werden. Wichtig sind die Werte bei voller Beleuchtung und geringster Beleuchtung über dem Fotowiderstand. Diese Werte-Grenzen trägst du nun im nächsten Schritt in den constrain-Befehl (anstelle der 200 und 800) und in den map-Befehl ein. Der Schritt ist optional, führt aber zu besseren Ergebnissen.

    Der constrain-Befehl schneidet Werte oberhalb und unterhalb der gegebenen Parameter ab. Dann wird der Eingangswert per map-Befehl in einen anderen Wertebereich konvertiert. Werte, die ja nun innerhalb der gegebenen Grenzen liegen, werden in den Ausgabebereich, in diesem Fall von 255 bis 0 umgewandelt. Dieser Wert wird nun per analogWrite an die LED übertragen.

    /* StartHardware.org – Arduino Nachtlicht */
    
    int ledPin = 3;                                 // Digitaler Output-Pin der LED
    int ldrPin = A0;                                // Analoger Input Pin für den Fotowiderstand (LDR)
    
    void setup() {
      Serial.begin(115200);                         // Startet die serielle Ausgabe (optional)
    }
    
    void loop() {
      int ldrWert = analogRead(ldrPin);             // liest den Wert (die Helligkeit) in die Variable ldrWert
      Serial.println(ldrWert);                      // Gibt den ldrWert im Seriellen Monitor aus
    
      ldrWert = constrain(ldrWert, 200, 800);       // schneidet Ausreißerwerte über/unter den gegebenen Grenzen ab
      int ledWert = map(ldrWert, 200, 800, 255, 0); // rechnet den ldrWert in Leuchtwerte für die LED um
    
      analogWrite(ledPin, ledWert);                 // Ausgabe des Leuchtwertes (zwischen 0 und 255)
      delay(10);                                    // kurze Pause
    }

    Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!

    • Die beliebtesten Arduino-Projekte von StartHardware
    • Inklusive Schaltplan, Beschreibung und Code
    • Arduino-Schnellstart-Kapitel
    • Kompakter Programmierkurs


    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht.

     

    Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.