1.Einführung
Aufgabe: Eine LED soll blinken, und wir wollen die Blinkgeschwindigkeit mit einem Drehregler steuern.
Lerninhalt: Wir möchten lernen, wie man die Spannung eines Drehreglers misst, die gemessenen Werte mathe-matisch verarbeitet und sie dann für eine Ausgabe verwendet, in diesem Fall um die Dauer einer Pause zu bestimmen.
Ein Drehregler hat drei Anschlüsse. Die äußeren werden rechts mit + und links mit - verbunden. Ein Kabel vom mittleren Pin führt zu einem analogen Eingangspin auf der Platine des Mikrocontrollers. Wenn wir den Drehregler drehen, gibt der mittlere Pin eine Spannung zwischen 0 und 5 Volt aus. Ganz links gedreht zeigt der Drehregler 0 Volt, ganz rechts zeigt er 5 Volt an - abhängig von der Verkabelung auch andersherum. Der Analog-Digital-Wandler wandelt diese gemessene Spannung in einen Zahlenbereich um.
Arduino UNO: 0 bis 1023
ESP32-Wroom: 0 bis 4096
NodeMCU und Wemos D1 Mini: 0 bis 1024
2.Schaltpläne
2.1.Arduino UNO
2.2.ESP32 Wroom
3.Programmcode
3.1.Arduino UNO
// speichern des am Anschluss A0 gelesenen Werts
int ReglerWert;
// Potentiometer am Anschluss A0
int REGLER = A0;
// LED am Anschluss D1
int LED = D1;
void setup()
{
pinMode(LED, OUTPUT);
}
void loop()
{
// Wert des Potentiometers lesen
ReglerWert = analogRead(REGLER);
// LED einschalten
digitalWrite(LED, HIGH);
// LED für die Dauer des gelesenen Werts eingeschaltet lassen
delay(ReglerWert);
// LED ausschalten
digitalWrite(LED, LOW);
// LED für die Dauer des gelesenen Werts ausgeschaltet lassen
delay(ReglerWert);
}
3.2.ESP32 Wroom
// speichern des am Anschluss 34 gelesenen Werts
int ReglerWert;
// Potentiometer am Anschluss 34
int REGLER = 34;
// LED am Anschluss 23
int LED = 23;
void setup()
{
pinMode(LED, OUTPUT);
}
void loop()
{
// Wert des Potentiometers lesen
ReglerWert = analogRead(REGLER);
// LED einschalten
digitalWrite(LED, HIGH);
// LED für die Dauer des gelesenen Werts eingeschaltet lassen
delay(ReglerWert);
// LED ausschalten
digitalWrite(LED, LOW);
// LED für die Dauer des gelesenen Werts ausgeschaltet lassen
delay(ReglerWert);
}