Forum: Mikrocontroller und Digitale Elektronik ESP8266 - LED falsch gepolt betreiben


von Michael S. (michael_s677)


Lesenswert?

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
const char* ssid = "*****";       // Name WLAN
6
const char* password = "*****"; // Passwort WLAN
7
8
// LED-Pins (Minuspol der LEDs an den GPIO-Pins)
9
const int redLED = 4;    // D2 (Minuspol an D2, Pluspol an GND)
10
11
ESP8266WebServer server(80);
12
13
void setup() {
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
    String html = 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; }
53
          button { font-size: 20px; padding: 15px 30px; margin: 10px; cursor: pointer; border-radius: 5px; }
54
          #test { background-color: blue; color: white; }
55
        </style>
56
      </head>
57
      <body>
58
        <h1>LED Steuerung</h1>
59
        <button id="test" onclick="sendCommand('/test')">LED Test</button>
60
        <script>
61
          function sendCommand(command) {
62
            fetch(command).catch(err => console.log("Fehler: ", err));
63
          }
64
        </script>
65
      </body>
66
      </html>
67
    )rawliteral";
68
    server.send(200, "text/html", html);
69
  });
70
71
  server.begin();
72
  Serial.println("Server gestartet");
73
}
74
75
void loop() {
76
  server.handleClient(); // Verarbeite eingehende Web-Anfragen
77
}

Beitrag #7778348 wurde vom Autor gelöscht.
von Andreas B. (bitverdreher)


Lesenswert?

Plus an Vcc und Minuspole gegen Masse schalten.

: Bearbeitet durch User
von Lukas T. (tapy)


Lesenswert?

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.

von Sebastian R. (sebastian_r569)


Angehängte Dateien:

Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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

: Bearbeitet durch Moderator
von Yalu X. (yalu) (Moderator)


Lesenswert?

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

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

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?

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> oder habe ich hier mittelalterliche Vorstellungen?

Im Mittelalter MUSSTE man noch selbst denken KÖNNEN.

von Jens G. (jensig)


Lesenswert?

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?

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

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.

: Bearbeitet durch User
von Rudi (experte)


Lesenswert?

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.

von Michael S. (michael_s677)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

: Bearbeitet durch Moderator
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.