Zitat Zitat von Moppi Beitrag anzeigen
Das ist nicht ganz so einfach. Das nodeMCU ist etwas langsam. Ich hatte schon mal gelesen, dass die keine sher hohe Datenübertragungsrate per WiFi haben, aber mich stellt das so nicht ganz zufrieden. Einen Anfang habe ich gemacht, bis ich jetzt gesehen habe, wie lang das mit der Übertragung der Seite dauert.

Hier mal der vorläufige Code:
Code:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
 
const char* ssid = "....";
const char* password = "....";
 
ESP8266WebServer server(80);   //instantiate server at port 80 (http port)
 
  String page = "";
  //the HTML of the web page
  String s1="<div style='display:block;overflow:visible;'><div role='presentation' style='display:table'>";
  String s2="<div style='display:table-row;'>";
  String s3="<div style='display:table-cell;position:relative;vertical-align:top;width:1.5em;padding:0.1em;'><form style='height:0.65em;'><input type='text' name='but' value='";
  String s31="' maxlength='1' style='visibility:hidden;width:0;height:0;'><input id='but#0' type='submit' value='*' style='margin:0;height:1.5em;width:1.6em;font-family:monospace;font-style:normal;font-size:133%;color:#000000;font-weight:700;text-align:center;line-height:170%;border-radius:0.375em;border-width:1px;'></form></div>";
  String s4="</div>";


    int tableWidth=7;
    int tableHeight=7;




void setup(void){
  Serial.begin(115200); 
  delay(10);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password); //begin WiFi connection
  WiFi.config(IPAddress(xxx,xxx,x,xx), IPAddress(xxx,xxx,x,xx), IPAddress(255,255,255,0), IPAddress(xxx,xxx,x,xxx));


 
  Serial.println("");
 
  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
   
  server.on("/", [](){
    page = s1;
    int but = 0;
    for(int x=0; x < tableHeight; x++){
      page += s2;
      for(int j=0; j < tableWidth; j++){ 
        page += s3 + String(but) + s31;
        but++;
      }
      page += s4;
    }
    page += s4;
    server.send(200, "text/html", page);
  });
  server.begin();
  Serial.println("Web server started!");
}
 
void loop(void){
  server.handleClient();
  yield();
}
Es wäre in der Größe, per CSS, noch optimierbar, aber besser wär's mit JavaScript auf der Seite zu arbeiten und einem unsichtbaren Frame, zwecks Datenübertragung.


MfG
die Eingabe per Buttons ist nicht zeitkritisch, das dauert eh bis man ein Muster mit etwa 10-20 Buttons gedrückt hat.
Dann muss es per Sende-Button ("Fertig") übertragen weden,
und dann beginnt der Trainings- und Lernalgorithmus, der dann eh nicht mehr auf das Netzt per html zugreift und (je nach Netzstruktur und Musterzahl) durchaus mehrere Stunden dauern kann.

Im "Erinnerungsmodus" kann man dann dem Netz verschiedene Muster präsentieren (dauert so lange wie oben)
und dann legt es die gelernten Perzeptronwerte an (Netz-Matrix),
das dauert dann erfahrungsgemäß nur wenige Sekunden bis zur Auswertung.



Update:
dein html-Buttonpad sieht schon sehr schön aus, jetzt müssten die Buttons noch Zahlen tragen (0-63, zeilenweise hochgezählt),
Farbwechsel sobald gedrückt (grau->gelb o.ä.)
und dann müsste das Gesamt-Muster mit allen Nullen und Einsen für alle 64 Buttons als Block per Extra-Button an den esp gesendet werden, zur Weiterverarbeitung als net-inputs.

Anm.: WiFi.config() hat subnet 255,255,255,0 am Schluss!

WiFi.config(IPAddress(192,168,2,99), IPAddress(192,168,2,1), IPAddress(192,168,2,1), IPAddress(255,255,255,0));