In diesem kurzen Beitrag möchte ich dir zeigen, wie du einen Fotowiderstand an den ESP32 anschließt und programmierst.

Den Wert des Fotowiderstands möchte ich an einer gelben, 8 mm LED visualisieren.
Benötigte Ressourcen für dieses Projekt
Wenn du dieses kleine Projekt nachbauen möchtest, dann benötigst du:
- einen ESP32*,
- ein Micro-USB Datenkabel*,
- einen Fotowiderstand Typ KY-018*,
- eine LED*,
- einen 220 Ohm Vorwiderstand*,
- sechs Breadboardkabel*,
- ein 400 Pin Breadboard*
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Anschluss & Programmieren
Im nachfolgenden YouTube-Video erläutere ich dir, wie du die Schaltung am ESP32 aufbaust und in der Arduino IDE 2.0 programmierst.
Aufbau der Schaltung – ESP32 mit Fotowiderstand
Die Bauteile werden wie folgt an den ESP32 angeschlossen.
Der ESP32 hat den Vorteil, dass an den meisten Pins ein analoger Baustein angeschlossen werden kann.
Bauteil | ESP32 |
---|---|
LED | |
Kathode – kurzes Bein | 220 Ohm Widerstand > GND |
Anode – langes Bein | GPIO18 |
Fotowiderstand / LDR | |
S | GPIO14 |
Mitte / VCC | 5 V |
– / GND | GND |
In meinem Fall verwende ich den ESP32 im Formfaktor des Arduino UNOs, diesen Mikrocontroller habe ich dir bereits im Beitrag AZ-Delivery D1 Board mit ESP32 Chip ausführlich vorgestellt.
Programmieren
PWM Signal am ESP32 erzeugen
Ein PWM Signal lässt sich am ESP32 nicht so einfach erzeugen wie am Arduino, hier benötigt man zum einen ein paar Parameter sowie andere Funktionen.
#define led 18 const int FREQUENZ = 4000; const int CHANNEL = 0; const int RESOLUTION = 8; void setup() { pinMode(led, OUTPUT); ledcSetup(CHANNEL, FREQUENZ, RESOLUTION); ledcAttachPin(led, CHANNEL); } void loop() { for(int i=0;i<255;i++){ ledcWrite(CHANNEL, i); delay(25); } }
Lesen des analogen Wertes eines Fotowiderstandes
Den Fotowiderstand habe ich in meinem Fall am GPIO14 angeschlossen und kann recht einfach mit der Funktion „analogRead“ gelesen werden.
#define photoresistor 14 void setup() { Serial.begin(115200); } void loop() { int resistorValue = analogRead(photoresistor); Serial.println(resistorValue); delay(25); }
Hier nun der komplette Code zum Lesen des Wertes eines LDRs am ESP32 und anzeigen an einer Leuchtdiode.
#define photoresistor 14 #define led 18 const int FREQUENZ = 4000; const int CHANNEL = 0; const int RESOLUTION = 8; void setup() { pinMode(led, OUTPUT); Serial.begin(115200); ledcSetup(CHANNEL, FREQUENZ, RESOLUTION); ledcAttachPin(led, CHANNEL); } void loop() { int resistorValue = analogRead(photoresistor); Serial.println(resistorValue); int ledPWMvalue = map(resistorValue, 720, 3100, 0, 255); ledcWrite(CHANNEL, ledPWMvalue); delay(25); }