Sturzi's Arduino-Bastel-Projekt #1 - Es werde Licht

  • Hoi Röbi

    Das Programm für 2 LEDs (Post #52) läuft bei mir einwandfrei.

    Gruss Oski

    signatur_egos.jpg

    ...auch Nichtraucher können süchtig sein nach Zündhölzern!

  • Hallo Röbi

    hallo liebe Mitstreiter

    ich habe in der Zwischenzeit einige Programme durchgespielt und würde sagen, dass ich trotz des fehlenden Starterkits Experimente nachstellen kann.

    Ich habe vor Jahren mehrere LEDleisten hergestellt, die mir nun den Aufbau vereinfachen.


    Das Zufallsblinken mehrerer LEDs ist mir gelungen, ebenso die Version mit dem zusätzlichen Potentiometer.

    Ich bemühe mich, Deine Programme Buchstabe für Buchstabe abzuschreiben, was nicht immer gut geht - da file Vlüchtigkeitsfeler - aber das Programm zeigt ja den Fehler an.

    Dennoch muss ich zugeben, dass ich das Anwählen und Kopieren bei längeren Programmen mehrmals ganz, ganz selten auch schon gemacht habe.


    Gruss und danke für Deine Zeit

    Peter

  • Verwendung einer Photo-Diode, um die Blinkerei bei hellem Licht auszuschalten


    Ich habe bei meiner Schaltung die Verstellung der Intervall-Dauer mit dem Potientiometer wieder herausgenommen, um das Programm für die weiteren Schritte so kompakt wir möglich zu halten. Der praktische Sinn, die Intervalle verstellen zu können, ist eher klein, weil die Intervalle ja sehr gut mit den vier Konstanten (Zeilen 1 bis 4) eingestellt werden können. Ihr könnte es bei eurer Version aber auch gern drin lassen.


    Ich starte also für diesen neuen Schritt mit folgender Version:


    Bei diesem neuen Schritt geht es nun darum, den Lichtsensor (oder Photo-Diode oder Ambient Light Sensor) aus dem Starter-Kit einzusetzen.

    Der Lichtsensor wird an einen analogen Eingang angeschlossen. Die Spannung variiert mit der Helligkeit beim Lichtsensor. Je heller es ist, desto kleiner wird die Spannung.

    Mit Hilfe einer Konstanten werden wir einen Threshold (Schwellwert) einstellen. Das Programm wird so modifiziert, dass die Dioden nur dann leuchten, bzw. blinken, wenn das Licht im Raum unter diesen Schwellwert fällt.


    Man schalte die Anode (das längere Ende) der Photodiode über einen 10 kΩ Widerstand an 5V und zusätzlich an einen analogen Eingang des Arduino (ich habe hier A0 gewählt). Die Kathode (das kürzere Ende) schalte man an Ground.


    Hinweis: Im Projektbuch des Arduino Starter-Kit wird von einem Photo-Widerstand (der wäre nicht polaritäts-abhängig) gesprochen. Es liegen hingegen Photo-Dioden bei, die polaritäts-abghängig sind. Mindestens bei meinem Starter Kit ist das so.


    Das neue Programm, welches die Photo-Diode berücksichtigt, sieht bei mir so aus:

    Was neu ist:


    Zeilen 1 bis 4: Ich habe provisorisch die Blink-Intervalle etwas heruntergesetzt, dass man nicht zu lange warten muss, bis wieder etwas leuchtet oder ablöscht.


    Zeile 6: Hier ist ein Grenzwert definiert. Wenn der Eingangs-Wert unter diesem liegt, ist es so hell, dass die LEDs ausgeschaltet werden können. Dieser Wert kann je nach Exemplar der Photo-Diode oder der Lichtverhältnisse in eurem Raum ganz anders liegen. Er ist aber sicher im Bereich 0 ... 1023.


    Zeile 11: Hier muss man den Analogen Eingang, den man gewählt hat, angeben (bei mir A0).


    Zeile 17: Serial.begin(), damit wir den Wert des analogen Eingangs auf dem Serial Monitor anzeigen können. Das kann später wieder entfernt werden.


    Zeile 37: Hier wird der analoge Eingang eingelesen und in der Variablen analogValue gespeichert.


    Zeile 38: Damit man auch sieht, was man analog eingelesen hat, wird dieser Wert auf den Serial Monitor geschickt. Das hilft zum Einstellen des LIGHT_THRESHOLD. Das kann später wieder entfernt werden.


    Zeilen 39 bis 41: Wenn es im Raum hell genug ist (also wenn der eingelesene Analog-Wert kleiner ist als der Threshold), wir der newStatus auf LOW gesetzt (unabhängig davon, wie er der Zeile 35 vorbereitet wurde). So wird sichergestellt, dass die LEDs ablöschen.


    Jeder muss nun individuell seinen LIGHT_THRESHOLD so einstellen, dass es bei ihm funktioniert.