einfacher Webserver am ESP32

OP #7531871
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

Angehängte Dateien:
#7531906
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren