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);
}