Hallo Jimmy,
ich habe mal ein Beispiel geschrieben. Ungetestet. Ich mache wenn immer möglich die Verweilzeiten OHNE
delay();.
delay ist sehr einfach und „verlockend“ anzuwenden. Man muss aber wissen, dass bei diesem Befehl der ESP wirklich nur wartet bis die Zeit abgelaufen ist. Betätigt man einen Schalter, Sensor oder sonst was, reagiert er nicht auf diese Eingaben, bis die Zeit abgelaufen ist. Danach geht er in den Loop (c.a. ein paar Milisekunden) und wartet wieder. Das gibt einem das Gefühl, dass der ESP nicht mehr auf Eingaben reagiert.
Deshalb das Bsp. mit
C
- #include <ESP8266WiFi.h>
- #include <ESP8266WebServer.h>
- #include <ESP8266mDNS.h>
- ESP8266WebServer server(80);
- const char* ssid = "deine ssid";
- const char* password = "dein Passwort";
- // following for the name of: http://Test.local/
- const char* dns_name = "Test";
- /*****( PIN Out WEMOS D1 mini)*****/
- /***** d0 = 16 *****/
- /***** d1 = 5 *****/
- /***** d2 = 4 *****/
- /***** d3 = 0 *****/
- /***** d4 = 2 *****/
- /***** d5 = 14 *****/
- /***** d6 = 12 *****/
- /***** d7 = 13 *****/
- /***** d8 = 15 *****/
- /***** Analog InPut *****/
- /***** A0 = A0 ACHTUNG MAX 3.3V *****/
- int d1 = 5;
- int d1_status = 0;
- unsigned long previousMillis = 0;
- const long interval = 5000; // hier die Zeit eingeben.
- void setup()
- {
- Serial.begin(115200);
- Serial.println("ESP Gestartet");
- pinMode(d1, OUTPUT);
- WiFi.begin(ssid, password);
- Serial.print("Verbindung wird hergestellt ...");
- while (WiFi.status() != WL_CONNECTED)
- {
- delay(500);
- Serial.print(".");
- }
- Serial.println();
- Serial.print("Verbunden! IP-Adresse: ");
- Serial.println(WiFi.localIP());
- if (MDNS.begin(dns_name)) {
- Serial.println("DNS gestartet, erreichbar unter: ");
- Serial.println("http://" + String(dns_name) + ".local/");
- }
- server.onNotFound([]() {
- server.send(404, "text/plain", "Link wurde nicht gefunden!");
- });
- server.on("/", []() {
- server.send(200, "text/plain", "ESP-Startseite!");
- });
- server.on("/relais_on", []() {
- server.send(200, "text/plain", "Relais an");
- relais_on();
- });
- server.on("/relais_off", []() {
- server.send(200, "text/plain", "Relais aus");
- relais_off();
- });
- server.on("/relais_state", []() {
- server.send(200, "text/plain", "Status Relais > " +String(int(d1_status)));
- int d1_status = digitalRead(d1);
- });
- server.begin();
- Serial.println("Webserver gestartet.");
- }
- void loop() {
- server.handleClient();
- int d1_status = digitalRead(d1);
- {
- unsigned long currentMillis = millis();
- if (currentMillis - previousMillis >= interval)
- {
- previousMillis = currentMillis;
- if (d1_status == HIGH) {
- digitalWrite(d1, LOW);
- }
- }
- }
- }
- /*****( END LOOP )*****/
- void relais_on(){
- digitalWrite(d1, HIGH);
- }
- void relais_off(){
- digitalWrite(d1, LOW);
- }
- void relais_state(){
- digitalRead(d1);
- }
Gruss Thomas