Arduino Tutorial: Der Lichtsensor

 

 

Dieses Tutorial widmet sich dem Lichtsensor. Dafür benutzen wir einen lichtempfindlichen Widerstand auch Fotowiderstand genannt (auf Englisch: light dependent resistor (LDR)). Dazu lassen wir uns die Helligkeit mit 10 LEDs anzeigen. Je heller es wird, umso mehr LEDs leuchten auf. Je dunkler es am Widerstand wird, umso weniger LEDs leuchten.

 

 

Was benötigst du?

  • 1 x Arduino Uno

 

  • 1 x USB Kabel

 

  • 1 x Steckbrett

 

  • 1 x Fotowiderstand (GL5528)

 

  • 10 x LED

 

  • 10 x Ohmscher Widerstand (220 Ohm)

 

  •  1 x Ohmscher Widerstand (10 Kiloohm)

 

  •  Jump Wire (Männlich)

 

 

Wie sieht der Schaltplan aus?

 

 

 

Der Code

int led[]= {2,3,4,5,6,7,8,9,10,11};                      // Variable für die LEDs

int analogPin=0;                                         // Variable für Pin A0

int ldrWert=0;                                           // Variable für den 

                                                         // gemessenen Analogwert

 

 

void setup() {

  

   for(int i=0;i<10;i++)                                 //

   {                                                     //

       pinMode(led[i], OUTPUT);                          // LEDs als Ausgang setzen

                                                         //

   }                                                     //

 

}

 

void loop() {

 

   ldrWert = analogRead(analogPin);                      // den Wert an Pin A0 lesen

   setzeLED(ldrWert);                                    // führe die Methode setzeLED

                                                         // aus und übergebe ldrWert

}                                                        // als Parameter

 

void setzeLED(int wert)                                  // die definierte Methode 

{                                                        // setzeLED

   int leseWert = map(wert,0,1023,0,9);                  // rechne den Analogwert

                                                         // in eine Zahl zwischen 0

                                                         // und 10 um

                                                         

   for(int i=0;i<10;i++)                                 //

   {                                                     // Vergleiche den Analogwert

       digitalWrite(led[i], (leseWert >=i)? HIGH:LOW);   // mit der LED Array

   }                                                     // und mache LED an oder aus

   

}

 

 

 

Den Sktech kannst du auch hier herunterladen.

 

 

Code- Review

Den einzigen Befehl den du noch nicht kennst ist folgender:

 

digitalWrite(led[i], (leseWert >=i)? HIGH:LOW);

 

Bis jetzt wusstest du, dass du eine LED mittels HIGH oder LOW als zweiten Parameter an und ausschalten kannst. Hier haben wir eine Bedingung gesetzt. Je nachdem ob diese Bedingung erfüllt ist oder nicht, wird die LED auf HIGH oder LOW gesetzt. Die Bedingung steht in den Klammern gefolgt mit ein Fragezeichen:

 

(leseWert >=i)?

 

Hier ist die Bedingung: "'leseWert' ist größer oder gleich 'i'." Wenn die Bedingung erfüllt wird wird die LED auf HIGH gesetzt. Wenn die Bedingung nicht erfüllt wird, wird die LED auf LOW gesetzt.

 

 

 

Warum brauchst du einen 10 Kiloohm Widerstand?

Wir haben hier einen Spannungsteiler konstruiert. Der Widerstand am Fotowiderstand sinkt, sobald es heller wird. Folglich fällt eine geringere Spannung am Fotowiderstand ab. Wenn es dunkler wird, wird der Widerstand größer. Am Fotowiderstand fällt folglich eine höhere Spannung ab.

 

 

 

 

An den beiden Widerständen kann nur insgesamt 5 Volt abfallen. Bis zum gemessenen Knotenpunkt fällt von den 5 Volt nur die Spannung U1 am Fotowiderstand ab. Die Restspanung, die gemessen wird beträgt 5V-U1. Die Restspannung fällt an dem 10K- Widerstand ab(U2). Wenn man keinen zweiten Widerstand zuschalten würde, würden die kompletten 5 Volt an dem Fotowiderstand abfallen. Man könnte also keine Spannungsschwankung messen.

 

 

 

 

 

 

Wenn du hier irgendetwas vermisst, bessere Ansätze hast oder dir etwas nicht klar ist, zögere nicht einen Kommentar zu hinterlassen.

Kommentar schreiben

Kommentare: 0