ESP32 – Fotowiderstand

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

ESP32 - Fotowiderstand & LED
ESP32 – Fotowiderstand & LED

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:

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.

ESP32 - Anschluss und programmieren eines Fotowiderstandes / LDR

Aufbau der Schaltung – ESP32 mit Fotowiderstand

Die Bauteile werden wie folgt an den ESP32 angeschlossen.

Schaltung - Fotowiderstand am ESP32
Schaltung – Fotowiderstand am ESP32

Der ESP32 hat den Vorteil, dass an den meisten Pins ein analoger Baustein angeschlossen werden kann.

BauteilESP32
LED
Kathode – kurzes Bein220 Ohm Widerstand > GND
Anode – langes BeinGPIO18
Fotowiderstand / LDR
SGPIO14
Mitte / VCC5 V
– / GNDGND

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.

Schaltung - ESP32 von AZ-Delivery mit Fotowiderstand
Schaltung – ESP32 von AZ-Delivery mit Fotowiderstand

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

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert