Sali Zämä
Leider bich ich nach langem suchen und Probieren nicht zu Laufen gebracht. Ich setzte zwar ein ESP32 ein jedoch nutze ich die Arduino IDLE was mit hilfe eines Plugins auch problemlos Funktioniert. (Hofe ich darf meine frage trozdem hier stellen)
Grundätzlich musste ich 8 Linien über eine einzlne webseiten, von unterschiedlichen geräten, auf dem OLED Display uber I2C anzeigen. Die Anzeige selbst funktioniert Ptoblem Los nur die dafür genutzte Variablen Werden nicht mit text sondern mit zahlen gefluttet.
Hier der HTML Code:
Hallo Welt7
Und Hier der des ESP32:
//WLAN
#include <WiFi.h>
#include <HttpClient.h>
const char* ssid = "SSID";
const char* password = "Passwort";
//URL der Webseiten
const char* serverNameIN1 = "http://192.168.1.1/Lieferanten-Lebensmittel/K1/L1.html";
const char* serverNameIN2 = "http://192.168.1.2/Lieferanten-Lebensmittel/K1/L2.html";
const char* serverNameIN3 = "http://192.168.1.3/Lieferanten-Lebensmittel/K1/L3.html";
const char* serverNameIN4 = "http://192.168.1.4/Lieferanten-Lebensmittel/K1/L4.html";
const char* serverNameIN5 = "http://192.168.1.5/Lieferanten-Lebensmittel/K1/L5.html";
const char* serverNameIN6 = "http://192.168.1.6/Lieferanten-Lebensmittel/K1/L6.html";
const char* serverNameIN7 = "http://192.168.1.7/Lieferanten-Lebensmittel/K1/L7.html";
const char* serverNameIN8 = "http://192.168.1.8/Lieferanten-Lebensmittel/K1/L8.html";
//Fuer die Anzeige auf dem OLED
#include <Wire.h>
#include <Adafruit_GFX.h> //Version 1.4.9
#include <Adafruit_SSD1306.h> //Version 1.2.9
#define OLED_RESET 4
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
//Wariablen Für Input
String IN1;
String IN2;
String IN3;
String IN4;
String IN5;
String IN6;
String IN7;
String IN8;
void setup() {
Serial.begin(9600); //legt BAUD fuer den seriellen Monitor fest
Serial.println("Aktiv");
displaySetup();
WiFiSetup();
}
void loop() {
// delay in ms -> 1000 bedeutet alle Sekunde
delay(1000);
//Einlesen
DataInput();
}
//setzt den Display zurück und legt die Textgröße fest, wird einmalig beim Start aufgerufen -> setup()
void displaySetup() {
Serial.println("Display wird Konfiguriert");
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
display.clearDisplay(); //reinigt den Bildschirm am Anfang
display.setTextSize(1); //Textgroesse 4 entspricht dem halbem Bildschirm
display.setTextColor(INVERSE); //Inverse des schwarzen Bildschirms -> weiss
Serial.println("Display Konfiguriert");
displayOutput("Display","Konfiguriert","","","","","","");
}
//Legt die einstelungen des WIFI fest, und giebt die IP aus
void WiFiSetup(){
WiFi.begin(ssid, password);
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
displayOutput("Verunden","mit","Server","","","","","");
}
//Legt das ziel und die herkunft fest
void DataInput(){
if(WiFi.status()== WL_CONNECTED ){
IN1 = httpGETRequest(serverNameIN1);
IN2 = httpGETRequest(serverNameIN2);
IN3 = httpGETRequest(serverNameIN3);
IN4 = httpGETRequest(serverNameIN4);
IN5 = httpGETRequest(serverNameIN5);
IN6 = httpGETRequest(serverNameIN6);
IN7 = httpGETRequest(serverNameIN7);
IN8 = httpGETRequest(serverNameIN8);
displayOutput(IN1,IN2,IN3,IN4,IN5,IN6,IN7,IN8);
}
else {
Serial.println("WiFi Disconnected");
//Ferbindungsfehler auf Display
displayOutput("Verbindung","Fehlgeschlagen","","","","","","");
}
}
//Füllt das display aus
void displayOutput(String L1,String L2,String L3,String L4,String L5,String L6,String L7,String L8) {
Serial.println("Display bereinigt");
Serial.println("Display wird beschriftet...");
Serial.println("Linie1: " + L1 + "/ Linie2 : " + L2 + "/ Linie3 : " + L3 + "/ Linie4 : " + L4 + "/ Linie5 : " + L5 + "/ Linie6 : " + L6 + "/ Linie7 : " + L7 + "/ Linie8 : " + L8);
display.clearDisplay();
//Display Ausgabe Position 0.0
display.setCursor(0,0);
//Ausgabe der werten
display.print(L1);
display.print(L2);
display.print(L3);
display.print(L4);
display.print(L5);
display.print(L6);
display.print(L7);
display.print(L8);
Serial.println("Display beschriftet");
}
//Lest die daten aus der webseite Raus
String httpGETRequest(const char* serverName) {
String Inhalt;
// Initialize die library
HttpClient client;
// Ruft die Webseite Auf
client.get(serverName);
//Liest die daten in eine Variable
while(client.available()) {
Inhalt = client.read();
Serial.println(Inhalt);
}
//Gibt den inhalt zurück
return Inhalt;
}
ESP32_OLED_V2.ino (4.29 KB)