LED an- bzw. ausdimmen
Die zuvor gewonnen Erkenntnisse nutzen wir nun um eine Schaltung zu realisieren, bei der zwei LEDs so verschaltet sind, dass sie sich unter Verwendung des Potentiometers gegensätzlich an- bzw. ausdimmen lassen.
Neben dem 10 kΩ Potentiometer verwenden wir zwei grüne LEDs und zwei 220 Ω Widerstände.
Material:
- Breadboard
- USB-Kabel
- ESP32
- Jumper Kabel (8x)
- LED (2x)
- 220 Ω Widerstand (2x)
- 10 kΩ Drehpotentiometer
- Arduino IDE
Die Schaltung sieht folgendermaßen aus:
Steckplatine:
Abbildung 1: Steckplatine
Quelle: BBS 2 Wolfsburg
Schaltplan:
Abbildung 2: Schaltplan
Quelle: BBS 2 Wolfsburg
Im Programm wird die Funktion "analogWrite" verwendet. Diese ist jedoch nicht direkt für den ESP32 implementiert . Daher muss zunächst eine Bibliothek eingebunden werden.
Die Bibliothek heißt "ESP32 AnalogWrite by ERROPiX Version 0.1.0"
Um die Bibliothek zu installieren, gehen sie folgendermaßen vor:
-
Rufen Sie unter dem Menüpunkt “Werkzeuge“ den Unterpunkt “Bibliotheken verwalten…“ auf
-
Geben Sie nun in der Suchleiste “ ESP32 AnalogWrite“ ein und klicken Sie auf “ installieren.“
-
Wurde die Bibliothek erfolgreich installiert so erscheint neben dem Titel der Bibliothek ein “INSTALLED“
Abbildung 3: Bibbliotheken verwalten
Quelle: BBS 2 Wolfsburg
Abbildung 4: Bibliothek installieren
Quelle: BBS 2 Wolfsburg
Abbildung 5: LEDs bei verschiedenen Potentiometer Stellungen
Quelle: BBS 2 Wolfsburg
Bei der Programmierung ist zu beachten, dass "analogWrite" Werte von 0 bis 255 akzeptiert.
Über die Funktion "analogRead" wird ein analoger Wert bei einer bestimmten Stellung des Potentiometers eingelesen. Da diese Werte von 0 bis 4095 reichen müssen diese noch mit dem Wert 16,1 dividiert werden, damit sie in den Wertebereich von "analogWrite" passen. Durch Pulsweitenmodulation können die LEDs dann in verschiedenen Helligkeiten leuchten.
Source Code:
#include <Arduino.h> // einbinden von Header-Dateien
#include <analogWrite.h> // einbinden von Header-Dateien
int led1 = 26; // Deklaration der led1 (angeschlossen an PIN 26)
int led2 = 27; // Deklaration der led1 (angeschlossen an PIN 27)
void setup() // Standartstruktur
{
Serial.begin(115200); // Initialisiert die serielle Kommunikation mit der Geschwindigkeit in Baud.
}
void loop() // Standartstruktur
{
int value = analogRead(34); // Deklaration der Variablen “value“ vom Datentyp int und Initialisierung mit dem Wert, der über “analogRead“ an Pin 34 eingelesen wird
Serial.println(value); // Textausgabe von “value“ über den Seriellen Monitor
analogWrite(led1 , value/16.1); // led1 wird mit Hilfe von “analogWrite“ ein “value“ zwischen 0-255 zugewiesen (andimmen)
analogWrite(led2 , 255-value/16.1); // led2 wird mit Hilfe von “analogWrite“ ein “value“ zwischen 0-255 zugewiesen (ausdimmen)
delay(500); // Wartezeit von 0,5 Sekunden bis die Schleife erneut durchlaufen wird
}