Ein lichtempfindlicher Widerstand ändert die Größe seines Widerstands in Abhängigkeit der Intensität von Licht, das auf ihn fällt. Diese kontinuierlich schwankenden Widerstandwerte kann man verwenden um an einem analogen Eingang unterschiedliche Spannungen anliegen zu lassen, die dann z. B. der Helligkeit in einem Raum entsprechen.
Dazu wird der lichtempfindliche Widerstand zwischen den 5V Anschluss des Arduino Boards und einen analogen Eingangspin geschaltet. Weiters wird ein 10kΩ Widerstand zwischen diesen analogen Eingang und den Ground GND gesetzt. Damit erhält man einen sogenannten Spannungsteiler zwischen 0V und 5V, bei dem die aktuelle Spannung am analogen Eingangspin dann abhängig vom Widerstand des lichtenpfindlichen Widerstands ist.
Aufbau und Material
- 1 Lichtempfindlicher Widerstand
- 1 Widerstand 10kΩ (Farbcode braun schwarz orange)
Programmierbeispiel
Mit diesem Programm wird der digitale Wert des Analog Digital Wandlers ausgelesen, welcher der Spannung an PIN A0 entspricht. Ist dieser Wert größer als 300 so wird die LED am Arduino Board an PIN 13 eingeschaltet, liegt der Wert darunter, soll die LED nicht leuchten. Dies kann ausprobiert werden, indem man den lichtempfindlichen Widerstand abdunkelt oder Licht auf ihn fallen lässt. Gegebenenfalls muss man den Wert von 300 je nach Umgebungsbedingungen anpassen.
void setup()
{
pinMode(13, OUTPUT); // Pin 13 wird als digitaler Ausgang festgelegt
}
void loop()
{
int AnalogWert = analogRead(A0); // auslesen des Werts an Pin A3 und ablegen in der Integervariable AnalogWert
if (AnalogWert>300) // Abfrage, ob der Wert der Variable AnalogWert größer als 511 ist
{
digitalWrite(13, HIGH); // ist der Wert der Variable AnalogWert größer als 511, dann Ausgang Pin 13 auf HIGH
}
else
{
digitalWrite(13, LOW); // ist der Wert der Variable AnalogWert kleiner oder gleich 511, dann Ausgang Pin 13 auf LOW
}
}
Erklärungen zu diesem Programmierbeispiel
pinMode(pin, mode)
Mit dieser Funktion wird das Verhalten eines der 14 I/O PINs festgelegt.
pin: 0, ..., 13
mode: OUTPUT, INPUT, INPUT_PULLUP
analogRead(pin)
Diese Funktion dient zum Auslesen des Werts eines analogen Eingangs. Der Rückgabewert dieser Funktion ist eine Integerzahl zwischen 0 und 1023.
pin: A0, ..., A5
return: 0, ..., 1023
digitalWrite(pin, value)
Diese Funktion dient zum Setzen des Zustands wenn ein Pin als Ausgang konfiguriert ist.
pin: 0, ..., 13
value: LOW, HIGH (bei LOW liegen am Pin 0V, bei HIGH liegen am Pin 5V an)