Hallo Kollegen,
ich bin am Zweifeln, ob ich diese Problem jemals gelöst bekomme.
Ich würde mich über eure Hilfe sehr freuen.
Ich verwende einen ESP8266 mit einem GY-521 Gyro um an Modellflugzeugen die Ruderwege zu vermessen.
Funktioniert alles super, nur leider habe ich bei der Website einige Probleme. Diese habe ich aus verschiedenen Beispielen zusammenkopiert.
Immerhin habe ich es nun geschafft, dass mir die im ESP berechneten Werte Ruderweg und Ruderwinkel mit 5Hz aktualisiert werden, nur leider wird die gesamte Website aktualisiert.
Dadurch können die Buttons nicht mehr sicher gedrückt werden und auch eine Eingabe in dem Input Feld ist unmöglich.
Anbei ein Screenshot von meiner Website.
In der Inputbox möchte ich die Rudertiefe eingeben, die ich für die Berechnung des Ruderweges benötige. Durch drücken des Button Übernehmen, möchte ich die Zahl auf eine Variable schreiben.
Durch drücken des Button Kalibrieren, möchte ich ein Offset in die Berechnung übernehmen, welches die aktuelle Werte nullt.
Hier mein Sketch gekürzt um die Berechnung:
#include <MPU6050.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <Wire.h>
/*Put your SSID & Password*/
const char* ssid = "xxxx"; // Enter SSID here
const char* password = "xxxxxx"; //Enter Password here
// MPU6050 Slave Device Address
const uint8_t MPU6050SlaveAddress = 0x68;
// Select SDA and SCL pins for I2C communication
const uint8_t scl = D6;
const uint8_t sda = D7;
// sensitivity scale factor respective to full scale setting provided in datasheet
ESP8266WebServer server(80);
float strRW,strWinkel;
#define taster1 10 //taster tare
#define led 5 //test LED
void setup() {
Serial.begin(115200);
Wire.begin(sda, scl);
MPU6050_Init();
pinMode(led, OUTPUT);
pinMode(taster1, INPUT);
delay(1000);
Serial.println("Connecting to ");
Serial.println(ssid);
//connect to your local wi-fi network
WiFi.begin(ssid, password);
//check wi-fi is connected to wi-fi network
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected..!");
Serial.print("Got IP: "); Serial.println(WiFi.localIP());
server.on("/", handle_OnConnect);
// server.on("/?RT=25&ACTION=test", handle_test);
server.onNotFound(handle_NotFound);
server.begin();
Serial.println("HTTP server started");
delay(1000);
}
void loop() {
double Ax, Ay, Az, T, Gx, Gy, Gz;
Read_RawValue(MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_XOUT_H);
if (tare==HIGH)
{
offset=mw_tilt_y;
digitalWrite(led, HIGH);
}
else
{
digitalWrite(led, LOW);
}
/
Serial.print("Ruderweg: "); Serial.print(RW,1);
Serial.print("mm; Winkel: "); Serial.print(mw_tilt_y-offset,1); Serial.println("°");
// strRW=(String)RW;
// strWinkel=(String)(mw_tilt_y-offset);
strRW=RW;
strWinkel=(mw_tilt_y-offset);
server.handleClient();
delay(5);
}
void I2C_Write(uint8_t deviceAddress, uint8_t regAddress, uint8_t data){
Wire.beginTransmission(deviceAddress);
Wire.write(regAddress);
Wire.write(data);
Wire.endTransmission();
}
// read all 14 register
void Read_RawValue(uint8_t deviceAddress, uint8_t regAddress){
}
void handle_OnConnect() {
server.send(200, "text/html", SendHTML1(strRW,strWinkel));
}
void handle_test() {
server.send(200, "text/html", SendHTML1(strRW,strWinkel));
}
void handle_NotFound(){
server.send(404, "text/plain", "Not found");
}
String SendHTML1(float(strRW1),float(strWinkel1)){
String ptr = "<!DOCTYPE html> <html>\n";
ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
ptr +="<title>Ruderweglehre by MWi</title>\n";
ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: left;}\n";
ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;}\n";
ptr +="p {font-size: 24px;color: #444444;margin-bottom: 10px;}\n";
ptr +="</style>\n";
//*******************************************************************
ptr +="</head>\n";
ptr +="<body>\n";
ptr +="<div id=\"webpage\">\n";
ptr +="<h1>Ruderweglehre by MWi</h1>\n";
ptr +="<h1>Ruder 1</h1>\n";
ptr +="<form>";
ptr +="<table>";
ptr +="<col width=\"180""\">";
ptr +="<col width=\"120""\">";
ptr +="<col width=\"120""\">";
ptr +="<col width=\"0""\">";
ptr +="<col width=\"0""\">";
ptr +="<tr>";
ptr +="<td><b>Rudertiefe in mm</b></td>";
ptr +="<td>";
ptr +="<input type=\text\ style= \width:100px\ name=\RT\ maxlength=\5\ Value =";
ptr +=RT;
ptr +="\></td>";
ptr +="<td><button style= \width:100px\ name=\ACTION\ value=R1Uebernehmen\>Übernehmen</button></td></tr><tr>";
ptr +="<td><b>Ruderwikel in Grad</b></td><td><b>";
ptr +=strWinkel1;
ptr +="</b></td>";
ptr +="<td><button style= \width:100px\ name=\ACTION\ value=R1Kalibrieren\>Kalibrieren</button></td></tr>";
ptr +="<td><b>Ruderweg in mm</b></td><td><b>";
ptr +=strRW1;
ptr +="</b></td>";
ptr +="</tr>";
ptr +="</table>";
ptr +="</form>";
ptr +="
";
ptr +="</div>\n";
ptr +="</body>\n";
ptr +="</html>\n";
ptr +="<script>\n";
ptr +="setInterval(loadDoc,200);\n";
ptr +="function loadDoc() {\n";
ptr +="var xhttp = new XMLHttpRequest();\n";
ptr +="xhttp.onreadystatechange = function() {\n";
ptr +="if (this.readyState == 4 && this.status == 200) {\n";
ptr +="document.getElementById(\"webpage\").innerHTML =this.responseText}\n";
ptr +="};\n";
ptr +="xhttp.open(\"GET\", \"/\", true);\n";
ptr +="xhttp.send();\n";
ptr +="}\n";
ptr +="</script>\n";
return ptr;
}
}
Wie gesagt, ich wäre über jede Hinweis dankbar.