Materialien zum Unterricht

Helligkeitsmessgerät

Es wird eine Anwendung entwickelt, die eine LED-Säule je nach Umgebungshelligkeit aufleucheten lässt: je heller es ist, um so weniger LEDs leuchten.

Ein Fotowiderstand und ein Festwiderstand ersetzen das Potentiometer. Der Fotowiderstand ändert je nach Lichteinfall seinen Widerstandswert: je heller es ist, um so kleiner ist der Widerstand.

Als Widerstand kommt ein Wert von 4,7 kOhm in Frage.

Damit ändert sich auch die Spannung am Anschluss A0 je nach Lichteinfall.

void loop(void) {
   int licht=analogRead(A0);
   int led = map(licht, 0, 1023, 0, 7);
   for (int i=0; i <=7; i++) {
        if (i < led) {
            digitalWrite(i, an);
        } else {
            digitalWrite(i, aus);
        }
   }
}

Nach dem Einlesen des analogen Wertes vom Anschluss A0 muss dieser in einen Wert zwischen 0 und 7 umgewandelt werden. Dazu gibt es die Funktion map, die aus dem Wert für licht, der zwischen 0 und 1023 liegt, einen Wert zwischen 0 und 7 berechnet. Das Ergebnis, dass vom Typ Integer ist, also immer nur eine ganze Zahl sein kann, wir der Variablen led zugewiesen.

Mit diesem Wert wir dann in der bekannten for-Schleife die LEDs eingeschaltet, deren Nummer kleiner als der berechnete led-Wert ist.

Beispiel: Die Helligkeit ist so, dass der Wert am Anschluss A0 256 beträgt. Das ist etwa ein Viertel von 1023. Damit erhält der Wert für led durch die map-Funktion den Wert 2 und die ersten beiden LED leuchten auf.

Aufgabe: Ändere das Programm so, dass die Anzeige umgekehrt ist, also mit wachsender Helligkeit immer weniger LED leuchten.

 

zurück