auf LCD Display per Web schreiben (nodemcu)

#5907218
Lesenswert?

So in etwa, ohne Garantie (ungetestet)
1
#include <Arduino.h>
2
#include <Wire.h>
3
#include <Adafruit_GFX.h>
4
#include <Adafruit_SSD1306.h>
5

6
const char HTTP_HEADER[] PROGMEM            = "<!DOCTYPE html><html lang=\"en\"><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\"/><title>{v}</title>";
7
const char HTTP_HEADER_END[] PROGMEM        = "</head><body><div style='text-align:left;display:inline-block;min-width:260px;'>";
8
const char HTTP_BODY_END[] PROGMEM             = "</div></body></html>";
9

10
Adafruit_SSD1306 display(128, 64, &Wire, -1);
11
AsyncWebServer server(80);
12

13
void setup() {
14
  Serial.begin(115200);
15
  
16
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3D)) { // Address 0x3D for 128x64
17
    Serial.println(F("SSD1306 allocation failed"));
18
    for(;;); // Don't proceed, loop forever
19
  }
20
  display.display();
21
  delay(2000); // Pause for 2 seconds
22

23
  // Clear the buffer
24
  display.clearDisplay();
25
  
26
  WiFi.begin("DeineSSID", "DeinPasswort");
27
  while (WiFi.status() != WL_CONNECTED) {
28
    delay(500);
29
    Serial.print(".");
30
  } 
31
  Serial.println("WiFi connected");
32
  Serial.println("IP address: ");
33
  Serial.println(WiFi.localIP());
34
    
35
  server.on("/", HTTP_GET, handleRoot);
36
  server.on("/lcd", HTTP_POST, handlepostLCD);
37
}
38

39
void loop(){
40

41
}
42

43
void handleRoot(AsyncWebServerRequest *request){
44
    uint8_t i,j;
45
    float money = 0.0;
46

47
    String page = FPSTR(HTTP_HEADER);
48
    page.replace("{v}", "LCD Test");
49
    page += FPSTR(HTTP_HEADER_END);
50

51
    page += F("<h1>LCD Test</h1><br />");
52

53
    page += F("<form action=\"/lcd\" method=\"post\">");
54
    page += F("LCD-Text: <input type=\"text\" name=\"LCDText\" value=\"\" />");
55
    page += F("<button type=\"submit\">Senden</button></form>");    
56

57

58
    page += FPSTR(HTTP_BODY_END);
59

60
    request->send(200, "text/html",page);
61
}
62

63
void handlepostLCD(AsyncWebServerRequest *request){
64
    String page = FPSTR(HTTP_HEADER);
65

66
    page.replace("{v}", "LCD-Text");
67
    page += FPSTR(HTTP_HEADER_END);
68
    page += F("<h1>Text an LCD gesendet</h1><br />");
69
    page += F("Text: ");
70
    int params = request->params();
71
    for(int i=0;i<params;i++){
72
        AsyncWebParameter* p = request->getParam(i);
73
        if(p->isPost()){
74
           if(String(p->name().c_str()) == "LCDText"){
75
                display.clearDisplay();
76
                display.println(String(p->value().c_str()));
77
                page += p->value().c_str();
78
                display.display();
79
            }
80
        }
81
    }
82
    
83
    page += FPSTR(HTTP_BODY_END);
84

85
    request->send(200, "text/html",page);
86
    
87

88
}

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