Ссылка посылающая 0 или 1 в eeprom
- Войдите на сайт для отправки комментариев
Сб, 03/06/2017 - 21:34
Всех приветствую!
Есть ардуинка и интернет шилд, уже наклепал скетч который позволяет создавать веб "сервер-страничку"
Всё работает, всё замечательно, но появилась необходимость вносить в eeprom всего лишь два значения, это ноль или единица. Нужно сделать кнопку или хотябы ссылку которая записывала бы в память контроллера значение. Как это сделать ума не приложу.
Помогите пожалуйста.
Есть int Regim; Regim= EEPROM.read(8); // Чтение значения в ячейке 5 а как дальше сделать форму отправки значения не понимаю
http://radioprog.ru/post/117
qwone благодарю за информацию.
Почитал, что то собрал, но не работает. Не могу понять в чем ошибка. Выдают ошибку при нажатии на ссылку "Not found: /minus1"
Перепилил код на esp8266 (12e) Работает всё, кроме главных задумок) Может код глянете?
#include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266mDNS.h> #include <EEPROM.h> // Библиотека памяти #include <OneWire.h> #include <DallasTemperature.h> OneWire oneWire(5); // вход датчиков 18b20 DallasTemperature ds(&oneWire); DeviceAddress T1 = {0x28, 0xFF, 0x4E, 0x70, 0x84, 0x16, 0x05, 0x2E}; // Адрес датчика температуры Т1 (ПИН 9) (2 полоски) (28 FF 4E 70 84 16 5 2E) DeviceAddress T2 = {0x28, 0xFF, 0x06, 0x3D, 0x82, 0x16, 0x05, 0x55}; // Адрес датчика температуры Т2 (ПИН 9) (1 полоска) (28 FF 6 3D 82 16 5 55) DeviceAddress T7 = {0x28, 0xFF, 0x8A, 0x99, 0x84, 0x16, 0x05, 0xC9}; // Адрес датчика температуры Тбак (ПИН 9) (3 полоски) (28 FF 8A 99 84 16 5 C9) DeviceAddress T13 = {0x28, 0xFF, 0xDA, 0x04, 0xB5, 0x16, 0x03, 0x88}; // Адрес датчика температуры Т13 (ПИН 9) (4 полоски) (28 FF DA 4 B5 16 3 88) DeviceAddress TNV = {0x28, 0xFF, 0x2A, 0x07, 0xC1, 0x16, 0x04, 0x54}; // Адрес датчика температуры ЗАРЕЗЕРВИРОВАННЫЙ (ПИН 9) (5 полосок) (28 FF 2A 7 C1 16 4 54) MDNSResponder mdns; // Wi-Fi const char* ssid = "ergeykl"; const char* password = "seredinskoe"; byte arduino_mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED }; IPAddress ip(192,168,0,200); IPAddress gateway(192,168,0,1); IPAddress subnet(255,255,255,0); ESP8266WebServer server(80); int PinSSR1 = 4; // Реле SSR 1 (Электрокотел ГВС) на пине D2 int PinSSR2 = 0; // Реле 2 (Клапан ГВС 7) на пине D3 int PinSSR3 = 2; // Реле 3 (Клапан ГВС 13) на пине D4 int PinSSR4 = 14; // Реле 4 (Насос ЦО обр.) на пине D5 int PinSSR5 = 12; // Реле 5 (Котел ЦО) на пине D6 int PinSSR6 = 13; // Реле 6 (Насос ГВС) на пине D7 int PinSSR7 = 15; // Реле 7 (Клапан ГВС 7') на пине D8 byte TargetTemp1; // переменная для значения сработки во флеше byte TargetTemp2; // переменная для значения сработки во флеше byte TargetTemp3; // переменная для значения сработки во флеше byte Otoplenie; // Работа Отопления (0 - выкл; 1 - вкл) byte GVS; // Работа ГВС (0 - выкл; 1 - вкл) byte Mode; // Режим поддержания темп-ры Отопления (0 - выкл; 1 - вкл) void setup(void){ pinMode(PinSSR1, OUTPUT); //Назначение пина на выход. Реле SSR 1 (Электрокотел ГВС) на пине D2 digitalWrite(PinSSR1, HIGH); //Изначально Реле 1 ВЫКЛ pinMode(PinSSR2, OUTPUT); //Назначение пина на выход. Реле 2 (Клапан ГВС 7) на пине D3 digitalWrite(PinSSR2, HIGH); //Изначально Реле 2 ВЫКЛ pinMode(PinSSR3, OUTPUT); //Назначение пина на выход. Реле 3 (Клапан ГВС 13) на пине D4 digitalWrite(PinSSR3, HIGH); //Изначально Реле 3 ВЫКЛ pinMode(PinSSR4, OUTPUT); //Назначение пина на выход. Реле 4 (Насос ЦО обр.) на пине D5 digitalWrite(PinSSR4, HIGH); //Изначально Реле 4 ВЫКЛ pinMode(PinSSR5, OUTPUT); //Назначение пина на выход. Реле 5 (Котел ЦО) на пине D6 digitalWrite(PinSSR5, HIGH); //Изначально Реле 5 ВЫКЛ pinMode(PinSSR6, OUTPUT); //Назначение пина на выход. Реле 6 (Насос ГВС) на пине D7 digitalWrite(PinSSR6, HIGH); //Изначально Реле 6 ВЫКЛ pinMode(PinSSR7, OUTPUT); //Назначение пина на выход. Реле 7 (Клапан ГВС 7') на пине D8 digitalWrite(PinSSR7, HIGH); //Изначально Реле 7 ВЫКЛ TargetTemp1 = EEPROM.read(0); // Чтение "предельной" темп-ры в ячейке 1 (Тн.в.) TargetTemp2 = EEPROM.read(2); // Чтение "предельной" темп-ры в ячейке 2 (ЦО Т2) TargetTemp3 = EEPROM.read(4); // Чтение "предельной" темп-ры в ячейке 3 (ГВС Т13) Otoplenie = EEPROM.read(6); // Чтение работы Отопления в ячейке 4 GVS = EEPROM.read(8); // Чтение работы ГВС в ячейке 5 Mode = EEPROM.read(10); // Чтение режима поддержания темп-ры Отопления в ячейке 6 ds.begin(); delay(100); Serial.begin(115200); WiFi.begin(ssid, password); WiFi.config(ip, gateway, subnet); 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()); if (mdns.begin("esp8266", WiFi.localIP())) { Serial.println("MDNS responder started"); } server.on("/", [](){ server.send(200, "text/html", webPage()); }); server.begin(); Serial.println("HTTP server started"); } void loop(void){ server.handleClient(); ds.requestTemperatures(); // считываем температуру с датчиков if (ds.getTempC(TNV) < 0) //Условие для включения обогрева дома { digitalWrite(PinSSR1, LOW); // Реле 1 вкл (Электрокотел ГВС) на пине 3 digitalWrite(PinSSR2, LOW); // Реле 2 вкл (Клапан ГВС 7) на пине 4 digitalWrite(PinSSR3, LOW); // Реле 3 вкл (Клапан ГВС 13) на пине 5 digitalWrite(PinSSR4, LOW); // Реле 4 вкл (Насос ЦО обр.) на пине 6 } else if (ds.getTempC(TNV) > 0) //Условие для выключения обогрева дома { digitalWrite(PinSSR1, HIGH); // Реле 1 выкл (Электрокотел ГВС) на пине 3 } } String webPage() { String web; if (web == "plus1") { TargetTemp1++; // Уваличить значение if ( TargetTemp1 > 1) // максимальное значение { TargetTemp1=1; // значение если было превышения максимального } EEPROM.write(0, TargetTemp1); // Запись нового значения в Флеш } if (web == "minus1") { TargetTemp1--; // Уменшить значение if ( TargetTemp1 < 0) // минимальное значение { TargetTemp1=0; // значение, если было занижения значения ниже минимального } EEPROM.write(0, TargetTemp1); // Запись нового значения в Флеш } web += "<center><a href=\"/minus1\">Уменьшить</a> <a href=\"/plus1\">Увеличить</a></center><br>"; web += "<center><table border=1 cellpadding=5 cellspacing=1 style=width: 800px; border-collapse: collapse border: 1px solid black align: center>"; web += "<tbody>"; web += "<tr style=background-color: silver>"; web += "<tr>"; web += "<td><center>"; web += (TargetTemp1); // Вывод инф из ячейки с "пределом" темп-ры (Тн.в.) web += "°C</center></td>"; web += "</tr>"; web += "</tbody>"; web += "</table>"; web += "</center>"; return(web); }