malone2033
New member
Делал сервер для управления пинами esp в виде флажков, необходимо чтобы при включенном пине флажок был отмечен для этого в файле index.h пришлось разделить MAIN_page на два куска, но микроконтроллер краситься при запросе этой страницы.
index.h
Код:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
//#include <avr\pgmspace.h>
#include "index.h"
//#include <ESP8266mDNS.h
ESP8266WebServer server(80);
//const char MAIN_page0[] PROGMEM={"<HTML>\n<head>\n<meta charset=\"utf-8\">\n<title>Управлялка</title>\n</head>\n<body>\n<form action=\"/\" method=\"post\" name=\"form\">"};
//const char MAIN_page1[] PROGMEM={"<input type=\"submit\" name=\"send\" value=\"Отправить\">\n</form>\n</body>\n</HTML>"};
int sig0;
int sig1;
int sig2;
String sos0;
String sos1;
String sos2;
void handleHome(){
String Var0 = server.arg("var0");
String Var1 = server.arg("var1");
String Var2 = server.arg("var2");
sig0 = atoi(Var0.c_str());
sig1 = atoi(Var1.c_str());
sig2 = atoi(Var2.c_str());
if(sig0 != 1)sig0 = 0;
if(sig1 != 1)sig1 = 0;
if(sig2 != 1)sig2 = 0;
if(sig0 == 1)sos0 = "checked";
else sos0 = "";
if(sig1 == 1)sos1 = "checked";
else sos1 = "";
if(sig2 == 1)sos2 = "checked";
else sos2 = "";
Serial.print("var0:");
Serial.println(sig0);
digitalWrite(12,sig0);
Serial.print("var1:");
Serial.println(sig1);
digitalWrite(14,sig0);
Serial.print("var2:");
Serial.println(sig2);
digitalWrite(16,sig0);
String s = MAIN_page0;
s += "Транзистор 4А:<input name=\"var0\" type=\"checkbox\" value=\"1\" ";
s += sos0;
s += "><br>";
s += "Транзистор 7А:<input name=\"var1\" type=\"checkbox\" value=\"1\" ";
s += sos1;
s += "><br>";
s += "Транзистор 15А:<input name=\"var2\" type=\"checkbox\" value=\"1\" ";
s += sos2;
s += "><br>";
//s += "<input type=\"submit\" name=\"send\" value=\"Сохранить\">\n</form>\n</body>\n</HTML>";
s += MAIN_page1;
server.send(200, "text/html", s);
}
void handleTEST(){
String Var0 = server.arg("var0");
String Var1 = server.arg("var1");
String Var2 = server.arg("var2");
sig0 = atoi(Var0.c_str());
sig1 = atoi(Var1.c_str());
sig2 = atoi(Var2.c_str());
if(sig0 != 1)sig0 = 0;
if(sig1 != 1)sig1 = 0;
if(sig2 != 1)sig2 = 0;
if(sig0 == 1)sos0 = "checked";
else sos0 = " ";
if(sig1 == 1)sos1 = "checked";
else sos1 = " ";
if(sig2 == 1)sos2 = "checked";
else sos2 = " ";
Serial.print("var0:");
Serial.println(sig0);
Serial.print("var1:");
Serial.println(sig1);
Serial.print("var2:");
Serial.println(sig2);
String mess;
mess+=server.args();
mess+="\n";
for(uint8_t i = 0; i<server.args();i++){
mess+=""+server.argName(i)+":"+server.arg(i)+"\n";
}
Serial.println(mess);
Serial.println(server.argName(0));
Serial.println(server.arg(0));
server.send(200,"text/plain",mess);
}
void setup()
{
Serial.begin(115200);
Serial.println();
pinMode(12,OUTPUT);
pinMode(14,OUTPUT);
pinMode(16,OUTPUT);
WiFi.mode(WIFI_STA);
WiFi.begin("TP-LINK_5A3946", "91495341");
Serial.print("Connecting"); // "Подключение"
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("Connected, IP address: ");
// "Подключились, IP-адрес: "
Serial.println(WiFi.localIP());
server.on("/test",handleTEST);
server.on("/",handleHome);
server.begin();
Serial.println("server started");
}
void loop() {
server.handleClient();
}
HTML:
const char MAIN_page0[] PROGMEM = R"=====(
<HTML>
<head>
<meta charset="utf-8">
<title>Управлялка</title>
</head>
<body>
<form action="/" method="post" name="form">)=====";
const char MAIN_page1[] PROGMEM = R"======(
<input type="submit" name="send" value="Сохранить">
</form>
</body>
</HTML>
)======";