• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Использование PROGMEM в фийле index.h

malone2033

New member
Делал сервер для управления пинами esp в виде флажков, необходимо чтобы при включенном пине флажок был отмечен для этого в файле index.h пришлось разделить MAIN_page на два куска, но микроконтроллер краситься при запросе этой страницы.

Код:
#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();
  }
index.h
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>
)======";
 
Сверху Снизу