Forum: Mikrocontroller und Digitale Elektronik einfacher Webserver am ESP32


von Yasin (amin12)


Angehängte Dateien:

Lesenswert?

Hi,

ich wollte anhand dieses Beispiel Codes über eine HTTP Seite einen 
kontinuierliches Ausgangssignal in form von einem Rechteck am Port 18 
ein/ausschalten.

Leider komme ich aus der while schleife nicht wieder raus sobald der 
client auf ausschalten(currentLine.endsWith("GET /L") klickt wenn zuvor 
eingeschaltet (currentLine.endsWith("GET /H") wurde ab Z.112.

Danke für die Hilfe

von Εrnst B. (ernst)


Lesenswert?

Generell: Das ist kein Schönes Beispiel. OK um grob die Grundlagen zu 
sehen, aber das wars dann auch. Zum Erweitern maximal unglücklich.

Erstes Problem: das Pinwackeln soll weitergehen, auch wenn der 
Webbrowser gerade nicht verbunden ist (das ist er die meiste Zeit 
nicht).
Also muss der "digitalWrite&Delay"-Block Aus dem "if (client)" Block 
raus.

Nächstes Problem: Das Pinwackeln darf den Webserver nicht blockieren. 
Also: Statt "while (flag)" nur ein "if (flag)", und das wiederholen der 
Sequenz erledigt die loop().

Drittes Problem: Dadurch sind deine Puls- und Pausenzeiten ungenau, 
"jitter".

Viertes Problem: Nur ganz außen in der Loop reicht auch nicht, weil in 
der loop noch eine "while (client.connected())"-Schleife ist.

Fünftes Problem: Es wird nur eine Connection gleichzeitig unterstützt

usw.


Lösungsideen (Keine Komplettlösung, versuch das selber zu erarbeiten und 
frag bei Bedarf nochmal nach, so lernst du mehr)

-> Signal per Hardware erzeugen (PWM/Timer). Gibt evtl. auch eine 
Arduino-Lib dafür
-> Signal in einem Timer-Interrupt erzeugen. Auch hier gibt's eine Lib.
-> "echte" Webserver-Lib verwenden, die asynchron arbeitet

von Xanthippos (xanthippos)


Lesenswert?

ESP32/Arduino unterstützt Threads. Solltest dich sowieso in das RTOS 
einarbeiten. Dann kannst du ganz einfach die Schleife mitsamt delay() in 
einen eigenen Thread auslagen.

Während deine Schleife im delay() wartet, arbeitet der Webserver weiter.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Eigentlich sollte das kein Problem in Hardware sein, der ESP kann doch 
mit irgend einer Lib LEDs per PWM dimmen, das ist auch nichts weiter als 
ein Rechtecksignal. Vielleicht kann man das passend parametrisieren.

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.