Für den Anschluss eines Fotowiderstand an den Arduino wird folgendes
benötigt:
Der Fotowiderstand (LDR) bildet mit dem 10 kOhm Widerstand R2 einen Spannungsteiler. Der Spannungsteiler Ausgang wird an den Analog Eingang A2 des Arduino angeschlossen.
Neue Funktionen sind analogRead()
Liest den Wert vom angegebenen analogen Pin ein. Die Arduino-Boards enthalten einen 10-Bit-Analog-zu-Digital-Konverter. D.h. das Board mappt Eingangsspannungen zwischen 0 und 5 V auf Integer-Werte zwischen 0 und 1023. Die erreichte Auflösung ist damit z.B. auf einem Arduino UNO 5 V / 1024 Teile oder 0,0049 V (4,9 mV) per Teil.
Syntax
analogRead(pin)
Parameter
pin: Der Pinname, von der gelesen werden soll (A0 bis A5 auf den meisten Boards)
Rückgabewert
Den analog gelesenen Wert auf dem Pin (int). Allerdings ist der Wert limitiert durch die Auflösung des Digital-Konverters (0-1023 für 10 Bit und 0-4095 für 12 Bit).
Legt die Datenrate in Bit pro Sekunde (Baud) für die serielle Datenübertragung fest.
Syntax
Serial.begin(speed)
Parameter
Serial: Serielles Port-Objekt. Die Liste der verfügbaren seriellen Anschlüsse für jedes Board auf der Serial-Hauptseite.
speed: In Bits pro Sekunde (Baud).
Druckt Daten an den seriellen Anschluss als von Menschen lesbarer ASCII-Text. Dieser Befehl kann viele Formen annehmen. Zahlen werden für jede Ziffer mit einem ASCII-Zeichen gedruckt. Floats werden in ähnlicher Weise als ASCII-Ziffern gedruckt. Die Standardeinstellung ist zwei Dezimalstellen. Bytes werden als einzelnes Zeichen gesendet. Zeichen und Zeichenfolgen werden unverändert gesendet.
Syntax
Serial.print(val)
Serial.print(val, format)
Parameter
Serial: Serielles Port-Objekt.
val: Der zu druckende Wert.
format: Gibt die Basis (für ganzzahlige Datentypen) oder die Anzahl der Dezimalstellen (für Gleitkommatypen) an.
Druckt Daten an den seriellen Anschluss als von Menschen lesbarer ASCII-Text, gefolgt von einem Carriage-Return (ASCII 13 oder '\r') und einem Zeilenvorschubzeichen (ASCII 10 oder '\n'). Dieser Befehl hat die gleiche Form wie Serial.print().
Syntax
Serial.println(val)
Serial.println(val, format)
Parameter
Serial: Serielles Port-Objekt.
val: Der zu druckende Wert.
format: Gibt die Basis (für ganzzahlige Datentypen) oder die Anzahl der Dezimalstellen (für Gleitkommatypen) an.
Rückgabewert
Gibt die Anzahl der geschriebenen Bytes zurück, das Lesen dieser Anzahl ist jedoch optional.
Das Arduino Programm liest den Sensorwert ein und gibt diesen über die serielle Schnittstelle aus. Damit kann der Wert des LDRs mit dem Seriell Plotter in der Arduino IDE grafisch dargestellt werden.
Falls der gemessene Sensorwert einen bestimmten Wert (400) unterschreitet, wird die LED angeschaltet. Liegt der Sensorwert über diesem Wert, bleibt die LED dunkel. Damit wird die Funktion eines Dämmerungsschalter realisiert.
const int ledPin = 11;
const int ldrPin = A2;
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
pinMode(ldrPin, INPUT);
}
void loop() {
int ldrStatus = analogRead(ldrPin);
Serial.println(ldrStatus);
if (ldrStatus < 400) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
delay(100);
}
Es gibt eine Simulation für TinkerCAD Circuits. Hier kann die Schaltung simuliert werden, inklusive des Arduino Programm in Blocks bzw C++.
Hier das Programm in Blocks:
Und so sieht die Simulation der Schaltung aus.
Der Link zur TinkerCAD Circuits Simulation. Ein Klick auf Start Simulation startet die Simulation.