Hallo,
ich verzweifle gerade an einem simpel klingendem Problem: Es sollen zwei
LEDS mit einem ESP8266 (E13) angesteuert werden, allerdings haben die
LEDs einen gemeinsamen Pluspol und separate Minuspole. Zur Vereinfachung
habe ich in einen simplen Code mit nur einer LED geschrieben und die LED
am ESP verpolt angeschlossen (Pluspol der LED an GND, Minuspol an GPIO4
(=D2). Doch die LED leuchtet bei keinem der Befehle. Das Multimeter
zeigt, dass die Spannung entweder 0 oder die 3,3V beträgt. Aber
theoretisch bräuchte ich -3,3V, da ja die LED verpolt ist. Leider kann
ich die LED nicht richtig gepolt einbauen.
Kann der ESP8266 das einfach nicht? Könnte es ein ESP32? Eine externe
Lösung wie Transistor oder MOSFET möchte ich vermeiden. Hier der Code:
1
#include<ESP8266WiFi.h>
2
#include<ESP8266WebServer.h>
3
4
// WLAN-Einstellungen
5
constchar*ssid="*****";// Name WLAN
6
constchar*password="*****";// Passwort WLAN
7
8
// LED-Pins (Minuspol der LEDs an den GPIO-Pins)
9
constintredLED=4;// D2 (Minuspol an D2, Pluspol an GND)
10
11
ESP8266WebServerserver(80);
12
13
voidsetup(){
14
Serial.begin(115200);
15
Serial.println("Starte Setup...");
16
17
// WLAN-Setup als Client
18
WiFi.mode(WIFI_STA);
19
WiFi.begin(ssid,password);
20
21
Serial.print("Verbinde mit WLAN...");
22
while(WiFi.status()!=WL_CONNECTED){
23
delay(1000);
24
Serial.print(".");
25
}
26
27
Serial.println("\nWLAN verbunden!");
28
Serial.print("IP-Adresse: ");
29
Serial.println(WiFi.localIP());
30
31
// LED-Pin als Ausgang definieren
32
pinMode(redLED,OUTPUT);
33
34
// Alle LEDs aus (da verpolt, müssen wir HIGH setzen, um sie auszuschalten)
35
digitalWrite(redLED,HIGH);// Rot aus
36
37
// Webserver-Routen einrichten
38
server.on("/test",[](){
39
// Test: LED ein und aus
40
digitalWrite(redLED,LOW);// Rot an
41
delay(1000);
42
digitalWrite(redLED,HIGH);// Rot aus
43
server.send(200,"text/plain","LED ein/aus Test abgeschlossen!");
44
});
45
46
server.on("/",HTTP_GET,[](){
47
Stringhtml=R"rawliteral(
48
<html>
49
<head>
50
<title>LED Steuerung</title>
51
<style>
52
body { font-family: Arial, sans-serif; text-align: center; margin: 50px; }
Darf ich kurz fragen wo die Idee her kommt, dass der Chip oder auch der
esp32 -3,3 Volt ausgeben könnte?
Soweit ich weiß steht weder in den Datenblättern der Chips noch in
irgendwelchen Anleitungen so etwas drin. Daher vermute ich eine konkrete
Quelle, die entwedrr falsch ist, was anderes beschreibt oder sich auf
zusätzliche Beschaltung bezieht.
(Relevant) negative Spannungen gibt kein (funktionierender) mir
bekannter Mikrocontroller aus.
Michael S. schrieb:> Aber> theoretisch bräuchte ich -3,3V, da ja die LED verpolt ist.
Tipp: 0V ist von 3.3V zufällig genau die -3.3V entfernt, die du
brauchst.
Andreas B. schrieb:> Plus an Vcc und Minuspole gegen Masse schalten.
Genau das hier.
Nur deine Schaltlogik ist dann umgekehrt. Pin low heißt dann, dass die
LED leuchtet.
Andreas B. schrieb:> Plus an Vcc und Minuspole gegen Masse schalten.
Und in "elektronisch": die gemeinsamen Anoden der LEDs an Vcc, die
Kathode jeder LED einzeln (über einen Vorwiderstand) an einen µC-Pin.
Und wenn dort dann "low" ausgegeben wird, dann leuchtet die LED.
Das Ganze nennt sich im Fachbegriff auch "low-aktiv", weil hier die LED
leuchtet, wenn der Ausgang low ist.
Und ob eine 0 oder eine 1 ausgegeben wird, macht in der SW eh' keinen
Mehraufwand.
Michael S. schrieb:> ich verzweifle gerade an einem simpel klingendem Problem
Du kannst diese simple Lösung des tatsächlich simplen "Problems"
übrigens zigtausendmal im Netz finden, wenn du die richtigen Begriffe
verwendest:
- https://www.google.com/search?q=LED+gemeinsame+Anode+ansteuern
- https://www.google.com/search?q=LED+gemeinsame+Anode+ansteuern&udm=2
Michael S. schrieb:> Leider kann ich die LED nicht richtig gepolt einbauen.
Woran liegt es, dass du das nicht kannst?
Mir ist das schon mehrfach gelungen, und ich empfand es nicht einmal als
besonders schwierig ;-)
Lothar M. schrieb:> Du kannst diese simple Lösung des tatsächlich simplen "Problems"> übrigens zigtausendmal im Netz finden, wenn du die richtigen Begriffe> verwendest:> - https://www.google.com/search?q=LED+gemeinsame+Anode+ansteuern
Was mich immer wieder verwundert ist, dass die jüngeren Leute so oft
Schwierigkeiten haben, Antworten im Internet finden, obwohl es so
einfach geworden ist und sie damit aufgewachsen sind. Wie kommt das?
Google fasst die vielen Ergebnisse ja sogar schon mit KI zusammen,
meistens sogar korrekt. Einfacher geht es doch nun wirklich nicht, oder
habe ich hier mittelalterliche Vorstellungen?
Michael S. schrieb:> am ESP verpolt angeschlossen (Pluspol der LED an GND, Minuspol an GPIO4> (=D2). Doch die LED leuchtet bei keinem der Befehle.
Und warum glaubst Du, dass die in dieser Konstellation leuchten sollte?
Michael S. schrieb:> Aber> theoretisch bräuchte ich -3,3V, da ja die LED verpolt ist. Leider kann
Eben, und zwar gegen Masse.
> ich die LED nicht richtig gepolt einbauen.
Warum kannst Du das nicht? Keine Lust?
Wenn man die LED nicht richtig gepolt einbauen kann, dann könnte man
statt einer LED kleine Glühlämpchen verwenden.
Oder man kauft sich eine passende DUO Led mit gemeinsamer Kathode.
Die Lösung ist doch ganz einfach:
Er hat die Anode der LED auf Gnd gelegt und die Kathoden auf Ports.
Also ist die einfachste Lösung: Den Vcc des ESP auf Gnd legen und
den Gnd des ESP auf -3,3V. Einfacher gehts doch nicht.
Vielen Dank für die hilfreichen Antworten mit Hinweis auf VCC, es
funktioniert! LED-Plus an VCC, LED-Minus an GPIO.
Die SMD-LEDs sind so auf dem Baustein gelötet, dass es einen gemeinsamen
Pluspol gibt, ein anderer Anschluss ist daher nicht möglich.
Der Denkfehler war, dass man am Board weiterhin GND und den GPIO-Pin
benutzt. Darauf aufbauend habe ich dann gesucht, wie man das codebasiert
ändert, wenn die LED falsch angeschlossen ist. Ich bin also einen
Schritt zu weit in die Fehlersuche eingestiegen und habe nichts
passendes gefunden.
Michael S. schrieb:> Der Denkfehler war, dass man am Board weiterhin GND und den GPIO-Pin> benutzt.
Das ist kein Denkfehler, sondern schlichtes Unwissen. Das kann man aber
leicht ändern, wenn man sich über die verwendeten Bauteile vor dem
Programmieren schlau macht.
> LED-Plus an VCC, LED-Minus an GPIO.
Nochmal auf "elektronisch" für vertieften Lerneffekt:
**ANODE** an Vcc und **KATHODE** an den Pin.