Добрый день.
При компиляции для WEMOS D1 mini возникают следующие ошибки. Библиотеки все вроде бы свежие, копировал с полной заменой скачаные с гитхаба. Просьба помочь с решением:
In file included from C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/microLED.h:33:0,
from C:Usersev.utkin-nbDocumentsArduinofireLinePerlinfireLinePerlin.ino:22:
C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/ws2812_send.h: In function ‘void WS2812B_sendData(uint16_t*, uint16_t, uint8_t, uint8_t*, uint8_t*, uint8_t)’:
C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/ws2812_send.h:51:12: error: ‘SREG’ was not declared in this scope
sreg_prev=SREG;
C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/ws2812_send.h:98:4: error: expected ‘)’ before ‘DELAY‘
_DELAY_ // основная задержка
^
C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand ‘counter’
C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand ‘set_hi’
C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand ‘data’
C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand ‘set_lo’
C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand ‘data’
C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand ‘counter’
In file included from C:Usersev.utkin-nbDocumentsArduinofireLinePerlinfireLinePerlin.ino:22:0:
C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/microLED.h: In constructor ‘microLED::microLED(LEDdata*, int, byte)’:
C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/microLED.h:186:14: error: cannot convert ‘volatile uint32_t* {aka volatile unsigned int*}’ to ‘const volatile uint8_t* {aka const volatile unsigned char*}’ in assignment
ws2812_port = portOutputRegister(digitalPinToPort(pin));
C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/microLED.h:187:18: error: cannot convert ‘volatile uint32_t* {aka volatile unsigned int*}’ to ‘volatile uint8_t* {aka volatile unsigned char*}’ in assignment
ws2812_port_reg = portModeRegister(digitalPinToPort(pin));
C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/microLED.h: In constructor ‘microLED::microLED(LEDdata*, byte, byte, byte, M_type, M_connection, M_dir)’:
C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/microLED.h:195:14: error: cannot convert ‘volatile uint32_t* {aka volatile unsigned int*}’ to ‘const volatile uint8_t* {aka const volatile unsigned char*}’ in assignment
ws2812_port = portOutputRegister(digitalPinToPort(pin));
C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/microLED.h:196:18: error: cannot convert ‘volatile uint32_t* {aka volatile unsigned int*}’ to ‘volatile uint8_t* {aka volatile unsigned char*}’ in assignment
ws2812_port_reg = portModeRegister(digitalPinToPort(pin));
exit status 1
Коллеги, помогите разобраться. При компиляции скетча вылезает ошибка:
Arduino: 1.8.12 (Windows 10), Плата:»LOLIN(WEMOS) D1 R2 & mini, 80 MHz, Flash, Disabled (new aborts on oom), Disabled, All SSL ciphers (most compatible), 32KB cache + 32KB IRAM (balanced), Use pgm_read macros for IRAM/PROGMEM, 4MB (FS:2MB OTA:~1019KB), v2 Lower Memory, Disabled, None, Only Sketch, 921600″
In file included from C:Program Files (x86)ArduinolibrariesmicroLED/microLED.h:33,
from C:UsersProfessionalDownloadsFireFX-masterFireFX-masterfirmwareАдрескаfireLinefireLine.ino:25:
C:Program Files (x86)ArduinolibrariesmicroLED/ws2812_send.h: In function ‘void WS2812B_sendData(uint8_t*, uint16_t, uint8_t, uint8_t*, uint8_t*, uint8_t)’:
C:Program Files (x86)ArduinolibrariesmicroLED/ws2812_send.h:51:12: error: ‘SREG’ was not declared in this scope
51 | sreg_prev=SREG;
| ^~~~
C:Program Files (x86)ArduinolibrariesmicroLED/ws2812_send.h:97:26: error: expected ‘)’ before ‘DELAY‘
97 | «brcc to_end nt» // перейти если уже вывели low
| ^
| )
98 | DELAY // основная задержка
|
~~~~
C:Program Files (x86)ArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand 'counter'
105 | );
| ^
C:Program Files (x86)ArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand 'set_hi'
C:Program Files (x86)ArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand 'data'
C:Program Files (x86)ArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand 'set_lo'
C:Program Files (x86)ArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand 'data'
C:Program Files (x86)ArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand 'counter'
In file included from sketchfireLine.ino.cpp:1:
C:Program Files (x86)ArduinolibrariesmicroLED/microLED.h: In constructor 'microLED::microLED(LEDdata*, int, byte)':
C:UsersProfessionalAppDataLocalArduino15packagesesp8266hardwareesp82663.0.2coresesp8266/Arduino.h:201:60: error: cannot convert 'volatile uint32_t*' {aka 'volatile unsigned int*'} to 'const volatile uint8_t*' {aka 'const volatile unsigned char*'} in assignment
201 | #define portOutputRegister(port) (((port)==_PORT_GPIO16)?((volatile uint32_t*) &GP16O):((volatile uint32_t*) &GPO))
| ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| volatile uint32_t* {aka volatile unsigned int*}
C:Program Files (x86)ArduinolibrariesmicroLED/microLED.h:186:16: note: in expansion of macro ‘portOutputRegister’
186 | ws2812_port = portOutputRegister(digitalPinToPort(pin));
| ^~~~~~~~~~~~~~~~~~
C:UsersProfessionalAppDataLocalArduino15packagesesp8266hardwareesp82663.0.2coresesp8266/Arduino.h:203:60: error: cannot convert ‘volatile uint32_t*’ {aka ‘volatile unsigned int*’} to ‘volatile uint8_t*’ {aka ‘volatile unsigned char*’} in assignment
203 | #define portModeRegister(port) (((port)==_PORT_GPIO16)?((volatile uint32_t*) &GP16E)(volatile uint32_t*) &GPE))
|
~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| volatile uint32_t* {aka volatile unsigned int*}
C:Program Files (x86)ArduinolibrariesmicroLED/microLED.h:187:20: note: in expansion of macro 'portModeRegister'
187 | ws2812_port_reg = portModeRegister(digitalPinToPort(pin));
| ^~~~~~~~~~~~~
C:Program Files (x86)ArduinolibrariesmicroLED/microLED.h: In constructor ‘microLED::microLED(LEDdata*, byte, byte, byte, M_type, M_connection, M_dir)’:
C:UsersProfessionalAppDataLocalArduino15packagesesp8266hardwareesp82663.0.2coresesp8266/Arduino.h:201:60: error: cannot convert ‘volatile uint32_t*’ {aka ‘volatile unsigned int*’} to ‘const volatile uint8_t*’ {aka ‘const volatile unsigned char*’} in assignment
201 | #define portOutputRegister(port) (((port)==_PORT_GPIO16)?((volatile uint32_t*) &GP16O)(volatile uint32_t*) &GPO))
|
~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| volatile uint32_t* {aka volatile unsigned int*}
C:Program Files (x86)ArduinolibrariesmicroLED/microLED.h:195:16: note: in expansion of macro 'portOutputRegister'
195 | ws2812_port = portOutputRegister(digitalPinToPort(pin));
| ^~~~~~~~~~~~~~~
C:UsersProfessionalAppDataLocalArduino15packagesesp8266hardwareesp82663.0.2coresesp8266/Arduino.h:203:60: error: cannot convert ‘volatile uint32_t*’ {aka ‘volatile unsigned int*’} to ‘volatile uint8_t*’ {aka ‘volatile unsigned char*’} in assignment
203 | #define portModeRegister(port) (((port)==_PORT_GPIO16)?((volatile uint32_t*) &GP16E)(volatile uint32_t*) &GPE))
|
~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| volatile uint32_t* {aka volatile unsigned int*}
C:Program Files (x86)ArduinolibrariesmicroLED/microLED.h:196:20: note: in expansion of macro 'portModeRegister'
196 | ws2812_port_reg = portModeRegister(digitalPinToPort(pin));
| ^~~~~~~~~~~~~
exit status 1
Ошибка компиляции для платы LOLIN(WEMOS) D1 R2 & mini.
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
«Показать подробный вывод во время компиляции»
Причем на плату ардуино уно заливается и работает. А здесь нет. Что и где нужно изменить?
Решил сделать умную комнату под управлением Wemos d1 pro mini.
видео в YouTube как работать с esp8266.
сделал всё, как показано на видео.
C: Users Documents Arduino hardware esp8266com esp8266 cores esp8266 / Arduino.h: 302: 26: фатальная ошибка: pins_arduino.h: такого файла или каталога нет
компиляция прекращена.
Ошибка компиляции для платы LOLIN (WEMOS) D1 mini Pro.
Библиотеки есть все, вставленные ссылки в настройках Arduino IDE, установил пакет с платами, в менеджере плат, сделал всё.
#include <ESP8266WiFi.h> #include <WiFiUdp.h> #include <ESP8266mDNS.h> #include <EEPROM.h> #include <ArduinoOTA.h> extern "C" { #include "user_interface.h"; } bool ESP8266ControllerWifiClient_HRD = 0; bool ESP8266ControllerWifiClient_status = 1; bool ESP8266ControllerWifiClient_isDHCP = 1; bool ESP8266ControllerWifiClient_IsNeedReconect = 0; bool ESP8266ControllerWifiClient_workStatus = 1; char ESP8266ControllerWifiClient_SSID [40] = "Nahim43"; char ESP8266ControllerWifiClient_password [40] = "55672184"; IP-адрес ESP8266ControllerWifiClient_ip (0, 0, 0, 0); IP-адрес ESP8266ControllerWifiClient_dns (0, 0, 0, 1); IP-адрес ESP8266ControllerWifiClient_gateway (0, 0, 0, 1); IP-адрес ESP8266ControllerWifiClient_subnet (255, 255, 255, 0); uint8_t ESP8266ControllerWifiClient_mac [6] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; bool ESP8266ControllerWifi_isNeededRestsrt = 0; WiFiServer ESP8266ControllerWifi_tspWebServer (80); WiFiClient ESP8266ControllerWifi_tspWebServer_client; String ESP8266ControllerWifi_tspWebServer_client_buffer = ""; char * _ESP8266WebInterfacePagesNamesArray [] = {"Главная", "WIFI-KLIENT"}; char * _ESP8266WebInterfacePagesAddressesArray [] = {"../MY_SMART_ROOM", "../MY_SMART_ROOM/wifi-klient"}; String webSettingPageHeader1 = "HTTP / 1.1 200 OK r nКонтент-тип: text / html r n r n <! DOCTYPE HTML> r n <meta charset = " utf-8 "> r п <HTML> г п "; String webSettingPageFooterString = "Разработано специально для собственного пользования"; String webSettingPageHeaderString = "Умная комната"; String _ESP8266WebInterfacePageButton_save = "<input type = " submit "class = " buttonFlp "value = " Сохранить "> </ form>"; String _ESP8266WebInterfacePageButton_reset = "<form action = " "method = " POST "> <input type = " hidden "name = " resetController "value = " reset "> <input type = " submit "class = " buttonFlp "value = " Перезагрузить "> </ form>"; String webSettingPageMainStyle = ".menu {float: left; padding: 1%; отступ: 1%; ширина: 16%; граница: 1px сплошной черный; border-radius: 8px;} .menuItem {font-weight: 600; font- семейство: 'Times New Roman', Times, serif;} .header {отступ: 10px; слева: 0px; справа: 0px; верх: 0px; фон: # 00FFFF; выравнивание текста: по центру; font-weight: 600; шрифт -семейство: 'Times New Roman', Times, с засечками; размер шрифта: 250%;} .content {float: right; ширина: 78%;} .footer {float: left; отступ: 1%; ширина: 98% ; background: # 00FFFF; margin-top: 1%; выравнивание текста: по центру; font-weight: 600; семейство шрифтов: 'Times New Roman', Times, serif; размер шрифта: 150%;}. buttonFlp { ширина: 150px; радиус границы: 20px; фон: # 459DE5; цвет: #fff; размер шрифта: 12px; курсор: указатель; float: left; отступ: 1%; поле: 1%;}. buttonFlp: hover { фон: # 358DE5;} buttonFlp: фокус {контур: нет;} ";. bool isNeededCommitESP8266EEprom = 0; void setup () { EEPROM.begin (86); if (((readByteFromEEPROM (0, 0, 0x0)))! = 148) { (updateByteToEEPROM (0, 0, 0x0, (148))); (updateBooleanToEEPROM (1, 0, 0x0, (1))); (updateUnsignedLongToEEPROM (2, 0, 0x0, (0))); (updateStringToEEPROM (6, 40, 0x0, ("55672184"))); (updateStringToEEPROM (46, 40, 0x0, ("Nahim43"))); EEPROM.commit (); } ESP8266ControllerWifiClient_isDHCP = readBooleanFromEEPROM (1, 0, 0x0); ESP8266ControllerWifiClient_ip = _ipAddressFromUnsignetLong (readUnsignedLongFromEEPROM (2, 0, 0x0)); (readStingFromEEPROM (6, 40, 0x0)). toCharArray (ESP8266ControllerWifiClient_password, 40); (readStingFromEEPROM (46, 40, 0x0)). toCharArray (ESP8266ControllerWifiClient_SSID, 40); ArduinoOTA.setHostname ("СМАРТ-КОМНАТА"); ArduinoOTA.setPassword ((const char *) "0686401742"); ArduinoOTA.begin (); WiFi.mode (WIFI_STA); _esp8266WifiModuleClientReconnect (); ESP8266ControllerWifi_tspWebServer.begin (); } void loop () {ESP8266ControllerWifi_tspWebServer_client = ESP8266ControllerWifi_tspWebServer.available (); if (ESP8266ControllerWifi_tspWebServer_client) { String _WSCReqest = ""; int _WSCPageNumber = 0; задержка (5); while (ESP8266ControllerWifi_tspWebServer_client.available ()) { _WSCReqest.concat (символ (ESP8266ControllerWifi_tspWebServer_client.read ())); } ESP8266ControllerWifi_tspWebServer_client.flush (); _WSCPageNumber = _parseWebServerReqest (_WSCReqest); _sendWebServerPage (_WSCPageNumber); } if (isNeededCommitESP8266EEprom) {EEPROM.commit (); isNeededCommitESP8266EEprom = 0; } if (ESP8266ControllerWifi_isNeededRestsrt) {ESP.restart ();} if (ESP8266ControllerWifiClient_IsNeedReconect) {_esp8266WifiModuleClientReconnect (); ESP8266ControllerWifiClient_IsNeedReconect = 0; } ArduinoOTA.handle (); ESP8266ControllerWifiClient_status = WiFi.status () == WL_CONNECTED; if (ESP8266ControllerWifiClient_status) {if (! ESP8266ControllerWifiClient_HRD) {ESP8266ControllerWifiClient_ip = WiFi.localIP (); ESP8266ControllerWifiClient_subnet = WiFi.subnetMask (); ESP8266ControllerWifiClient_gateway = WiFi.gatewayIP (); ESP8266ControllerWifiClient_dns = WiFi.dnsIP (); WiFi.macAddress (ESP8266ControllerWifiClient_mac); ESP8266ControllerWifiClient_HRD = 1; }} else {ESP8266ControllerWifiClient_HRD = 0;} // Плата: 1 } bool _isTimer (unsigned long startTime, unsigned long period) { unsigned long currentTime; currentTime = миллис (); if (currentTime> = startTime) {return (currentTime> = (startTime + period));} else {return (currentTime> = (4294967295-startTime + period));} } void _sendWebServerPage (int sendPageNumber) { if (sendPageNumber == -1) { вернуть; } if (sendPageNumber == 1) {_sendWebServerPage1 (); вернуть; } if (sendPageNumber == 2) {_sendWebServerPage2 (); вернуть; } _sendWebServerSend404Page (); } void _sendWebServerSend404Page (void) { ESP8266ControllerWifi_tspWebServer_client.print ("HTTP / 1.0 404 не найден r nContent-Type: text / html r n r n <! DOCTYPE HTML> <html> <body> <p> 404 - страница не найдена </ р> </ тело> </ HTML> г п "); задержка (1); ESP8266ControllerWifi_tspWebServer_client.flush (); ESP8266ControllerWifi_tspWebServer_client.stop (); } int _parseWebServerReqest (String reqestAddres) { int index; int result = 0; if ((reqestAddres.indexOf ("POST")) == 0) { _parsePostWebServerReqest (reqestAddres); возврат -1; } Индекс = reqestAddres.indexOf ( "/"); reqestAddres = reqestAddres.substring (index + 1); index = reqestAddres.indexOf (""); reqestAddres = reqestAddres.substring (0, index); if (reqestAddres == "MY_SMART_ROOM") {result = 1;} if (reqestAddres == "MY_SMART_ROOM / wifi-klient") {result = 2;} вернуть результат; } void _parsePostWebServerReqest (String reqestAddres) { int index = reqestAddres.indexOf (" r n r n"); String paramsValue; String params = reqestAddres.substring (index + 4); while (params.length ()> 0) { index = params.indexOf ("&"); if (index == -1) { paramsValue = params; params = ""; } еще { paramsValue = params.substring (0, index); params = params.substring (индекс + 1); } _processingPostWebServerReqestData (paramsValue); } index = reqestAddres.indexOf ("Referer:"); paramsValue = reqestAddres.substring (index + 8); index = paramsValue.indexOf (" r"); paramsValue = paramsValue.substring (0, index); params = "HTTP / 1.0 200 OK r nContent-Type: text / html r n r n <! DOCTYPE HTML> <html> <head> <script type = " text / javascript "> документ .location.replace ( ""; params = params + paramsValue; params = params + ""); </ script> </ head> <body> </ body> </ html> r n "; ESP8266ControllerWifi_tspWebServer_client.print (PARAMS); задержка (1); ESP8266ControllerWifi_tspWebServer_client.flush (); ESP8266ControllerWifi_tspWebServer_client.stop (); } void _processingPostWebServerReqestData (String paramData) { индекс байта = paramData.indexOf ("="); если (индекс <0) {возвращение;} Ключ строки = paramData.substring (0, индекс); Строковое значение = convertPostData (paramData.substring (index + 1)); if (key.equals (String ("resetController"))) {ESP8266ControllerWifi_isNeededRestsrt = 1; вернуть;} if (key.equals (String ("parSetPage162179339E"))) {if (ESP8266ControllerWifiClient_isDHCP! = (value.equals (String ("on")))) {; ESP8266ControllerWifiClient_isDHCP = value.equals (String) (value) (string () on) (string) (value) (string ESP8266ControllerWifiClient_IsNeedReconect = 1; updateBooleanToEEPROM (1, 0, 0x0, ESP8266ControllerWifiClient_isDHCP); } } if (key.equals (String ("parSetPage222532213E"))) {if (checkIPAdressString (value)) { if ((_unsignetLongFromIPAdress (_ipAddressFromString (value)))! = (_unsignetLongFromIPAdress (ESP8266ControllerWifiClient_ip))) { ESP8266ControllerWifiClient_IsNeedReconect = 1; ESP8266ControllerWifiClient_ip.fromString (значение); updateUnsignedLongToEEPROM (2, 0, 0x0, (_unsignetLongFromIPAdress (ESP8266ControllerWifiClient_ip))); }} } if (key.equals (String ("parSetPage114204552E"))) {if (! (value.equals (String (ESP8266ControllerWifiClient_password)))) { ESP8266ControllerWifiClient_IsNeedReconect = 1; value.toCharArray (ESP8266ControllerWifiClient_password, 40); updateStringToEEPROM (6, 40, 0x0, значение); } } if (key.equals (String ("parSetPage226564620E"))) {if (! (value.equals (String (ESP8266ControllerWifiClient_SSID)))) { ESP8266ControllerWifiClient_IsNeedReconect = 1; value.toCharArray (ESP8266ControllerWifiClient_SSID, 40); updateStringToEEPROM (46, 40, 0x0, значение); } } if (key.equals (String ("parSetPage264864222E"))) {if (checkIPAdressString (value)) { if ((_unsignetLongFromIPAdress (_ipAddressFromString (value)))! = (_unsignetLongFromIPAdress (ESP8266ControllerWifiClient_ip))) { ESP8266ControllerWifiClient_IsNeedReconect = 1; ESP8266ControllerWifiClient_ip.fromString (значение); updateUnsignedLongToEEPROM (2, 0, 0x0, (_unsignetLongFromIPAdress (ESP8266ControllerWifiClient_ip))); }} } } String convertPostData (String value) { String result = ""; символ чар; байт-код; int i = 0; String codeString; while (i <value.length ()) { символ = значение. charAt (i); if (symbol == '+') { result.concat (''); } еще { если (символ == '%') { codeString = ""; я ++; codeString.concat (значение [I]); я ++; codeString.concat (значение [I]); code = hexStrToInt (codeString); Serial.println (codeString); Serial.println (код, HEX); result.concat (символ (код)); } еще { result.concat (символ); } } я ++; } вернуть результат; } void _sendWebServerPage1 (void) { printToClient (webSettingPageHeader1, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<head>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<head> <style>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ((webSettingPageMainStyle + ""), & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("" </ style> ", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ head>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<body>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<div class = " header ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient (webSettingPageHeaderString, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ((_ eSP8266SettingWebPageCreateMenu (0)), & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<div class = " content ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ((_eSP8266SettingWebPageATextVisualElement ("", "IP-адрес", (ESP8266ControllerWifiClient_ip.toString ()), 1, 1), & ESP8266ControllerWifi_tspWebServer_clier_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<div class = " footer ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient (webSettingPageFooterString, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ body> </ html>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); commitClient (& ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); } void _sendWebServerPage2 (void) { printToClient (webSettingPageHeader1, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<head>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<head> <style>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ((webSettingPageMainStyle + ""), & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("" </ style> ", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ head>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<body>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<div class = " header ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient (webSettingPageHeaderString, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ((_ eSP8266SettingWebPageCreateMenu (1)), & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<div class = " content ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<form action = " "method = " POST ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ((_eSP8266SettingWebPageInputFieldVisualElement ("", "SSID", ESP8266ControllerWifiClient_SSID, "parSetPage226564620E", "20", 0, 1)), & ESP8266ControllerWifi_vererWerWerSWWSWWSWWSWWSWWS_W_W_W_W_W_W_W_W_W_W_W_P_W printToClient ((_eSP8266SettingWebPageInputFieldVisualElement ("", "PASS", ESP8266ControllerWifiClient_password, "parSetPage114204552E", "20", 0, 1)), & ESP8266ControllerWifi_verererWentWerSWWSWWSWWSWWS_W_W_Wer_Wer_Wer_W_W_W_W_W_W_P printToClient ((_eSP8266SettingWebPageInputFieldVisualElement ("," IP-адрес ", (ESP8266ControllerWifiClient_ip.toString ())," parSetPage222532213E "," 20 ", 1, 1; printToClient ((_eSP8266SettingWebPageCheckBoxVisualElement ("", "DHCP", ESP8266ControllerWifiClient_isDHCP, "parSetPage162179339E")), & ESP8266ControllerWifi_tspWebServerff_Wer_Wer_Wer_Wer_Wer_Server_Cr printToClient (_ESP8266WebInterfacePageButton_save, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient (_ESP8266WebInterfacePageButton_reset, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<div class = " footer ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient (webSettingPageFooterString, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ body> </ html>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); commitClient (& ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); } void printToClient (строковое значение, WiFiClient * sendClient, String * sendBuffer) { for (int i = 0; i <value.length (); i ++) { if (sendBuffer-> length ()> 800) { sendClient-> печать (* sendBuffer); * sendBuffer = ""; } sendBuffer-> CONCAT (value.charAt (я)); } } void commitClient (WiFiClient * sendClient, String * sendBuffer) { if ((sendBuffer-> length ())> 0) { sendClient-> печать (* sendBuffer); } * sendBuffer = ""; sendClient-> заподлицо (); sendClient-> остановки (); } byte readByteFromEEPROM (int адрес, байт bitAddres, байт chipAddres) { вернуть EEPROM.read (адреса); } void updateByteToEEPROM (int адрес, байт bitAddres, байт chipAddres, значение байта) { isNeededCommitESP8266EEprom = 1; вернуть EEPROM.write (адрес, значение); } bool readBooleanFromEEPROM (int адрес, байт bitAddres, байт chipAddres) { byte temp = readByteFromEEPROM (addres, bitAddres, chipAddres); return bitRead (temp, bitAddres); } void updateBooleanToEEPROM (int адрес, байт bitAddres, байт chipAddres, значение bool) { byte temp = readByteFromEEPROM (addres, bitAddres, chipAddres); bitWrite (temp, bitAddres, value); updateByteToEEPROM (addres, bitAddres, chipAddres, temp); } unsigned long readUnsignedLongFromEEPROM (int адрес, байт bitAddres, байт chipAddres) { байт х [4]; for (байт i = 0; i <4; i ++) {x [i] = readByteFromEEPROM ((адреса + i), bitAddres, chipAddres);} длинная без знака * y = (длинная без знака *) & x; вернуть y [0]; } void updateUnsignedLongToEEPROM (int адрес, байт bitAddres, байт chipAddres, длинное значение без знака) { байт * x = (байт *) & значение; for (байт i = 0; i <4; i ++) {updateByteToEEPROM ((адрес + i), bitAddres, chipAddres, x [i]);} } char readCharFromEEPROM (int адрес, байт bitAddres, байт chipAddres) { вернуть readByteFromEEPROM (адреса, битовые адреса, чиповые адреса); } void updateCharToEEPROM (int адрес, байт bitAddres, байт chipAddres, значение символа) { updateByteToEEPROM (адреса, bitAddres, chipAddres, значение); } Строка readStingFromEEPROM (int addres, int dataLength, byte chipAddres) { String result = ""; char tempChar; for (int i = 0; i <dataLength; i ++) { tempChar = readCharFromEEPROM ((адреса + i), 0, chipAddres); if (byte (tempChar) == 0) { вернуть результат; } result.concat (tempChar); } вернуть результат; } void updateStringToEEPROM (int addres, int dataLength, byte chipAddres, String value) { char tempChar; for (int i = 0; i <dataLength; i ++) { if (i <value.length ()) { tempChar = value.charAt (i); } еще { tempChar = char (0); } updateCharToEEPROM ((адреса + i), 0, chipAddres, tempChar); } } String _eSP8266SettingWebPageAllVisualElementsHeader (стиль строки, метка строки) { String result = "<div"; if (style.length ()> 0) { result.concat ("class = " "); result.concat (стиль); result.concat ( "" "); } result.concat ("> <p>"); result.concat (метка); result.concat ( "<br>"); вернуть результат; } String _eSP8266SettingWebPageATextVisualElement (стиль строки, метка строки, значение строки, bool isIP, bool isClient) { String result = _eSP8266SettingWebPageAllVisualElementsHeader (style, label); if (isClient && isIP && ESP8266ControllerWifiClient_isDHCP && (! ESP8266ControllerWifiClient_status)) {result.concat ("??. ??. ??. ??");} else {result.concat (value);} result.concat ( "</ p> </ DIV>"); вернуть результат; } Строка _eSP8266SettingWebPageCreateMenu (int pageIndex) { String result = "<div"; result.concat ( "класс = " меню ""); result.concat ( ">"); для (int i = 0; i <2; i ++) { result.concat ("<div"); result.concat ( "класс = " MENUITEM ""); result.concat ( ">"); if (i == pageIndex) {result.concat (_ESP8266WebInterfacePagesNamesArray [i]);} else { result.concat ("<a href = " "); result.concat (_ESP8266WebInterfacePagesAddressesArray [I]); result.concat ( ""> "); result.concat (_ESP8266WebInterfacePagesNamesArray [I]); result.concat ( "</a>"); } result.concat ( "</ DIV>"); } result.concat ( "</ DIV>"); вернуть результат; } String _eSP8266SettingWebPageInputFieldVisualElement (стиль строки, метка строки, значение строки, имя строки, максимальная длина строки, bool isIP, bool isClient) { if (isClient && isIP && ESP8266ControllerWifiClient_isDHCP) {return _eSP8266SettingWebPageATextVisualElement (стиль, метка, значение, isIP, isClient);} String result = _eSP8266SettingWebPageAllVisualElementsHeader (style, label); result.concat ("<input type = " text "name = " "); result.concat (имя); result.concat ("" value = ""); result.concat (значение); result.concat ("" maxlength = ""); result.concat (maxlength); result.concat (""> </ p> </ div> "); вернуть результат; } String _eSP8266SettingWebPageCheckBoxVisualElement (стиль строки, метка строки, значение bool, имя строки) { String result = "<div"; if (style.length ()> 0) { result.concat ( "класс = " "); result.concat (стиль); result.concat ( "" "); } result.concat ("> <label> <input type = " checkbox "id = " "); result.concat (имя); result.concat ( "1 " "); if (value) {result.concat ("флажок");} result.concat ( "/>"); result.concat (метка); result.concat ("</ label> <input type = " hidden "name = " "); result.concat (имя); result.concat ("" id = ""); result.concat (имя); result.concat ( "2"); result.concat ("" value = ""); if (value) {result.concat ("on");} else {result.concat ("off");} result.concat (""> <script> var el "); result.concat (имя); result.concat ("= document.querySelector ('#"); result.concat (имя); result.concat ( "1"); result.concat ("'); el"); result.concat (имя); result.concat (".onclick = function () {if (el"); result.concat (имя); result.concat (".checked) {document.getElementById ('"); result.concat (имя); result.concat ( "2"); result.concat ("'). value =' on ';} else {document.getElementById ('"); result.concat (имя); result.concat ( "2"); result.concat ("'). value =' off ';}} </ script> </ div>"); вернуть результат; } int hexStrToInt (String instring) { byte len = instring.length (); if (len == 0) вернет 0; int result = 0; for (байт i = 0; i <8; i ++) // только первые 8 цыфар влезуть в uint32 { char ch = instring [i]; if (ch == 0) перерыв; результат << = 4; if (isdigit (ch)) результат = результат | (ch - '0'); иначе результат = результат | (ch - 'A' + 10); } вернуть результат; } void _esp8266WifiModuleClientReconnect () { if (_checkMacAddres (ESP8266ControllerWifiClient_mac)) {wifi_set_macaddr (0, const_cast <uint8 *> (ESP8266ControllerWifiClient_mac));} if (ESP8266ControllerWifiClient_isDHCP) {WiFi.config (0U, 0U, 0U, 0U, 0U); } еще { WiFi.config (ESP8266ControllerWifiClient_ip, ESP8266ControllerWifiClient_gateway, ESP8266ControllerWifiClient_subnet, ESP8266ControllerWifiClient_dns, ESP8266ControllerWifiClient_dns); } WiFi.begin (ESP8266ControllerWifiClient_SSID, ESP8266ControllerWifiClient_password); } IPAddress _ipAddressFromUnsignetLong (длинное значение без знака) { IP-адрес результата; байт * x = (байт *) & значение; for (байт i = 0; i <4; i ++) { результат [i] = x [i]; } вернуть результат; } bool checkIPAdressString (String value) { IP-адрес temp; вернуть temp.fromString (значение); } IPAddress _ipAddressFromString (String value) { IP-адрес temp; temp.fromString (значение); вернуть темп; } unsigned long _unsignetLongFromIPAdress (значение IPAddress) { байтовый буфер [4] = {0, 0, 0, 0}; for (байт i = 0; i <4; i ++) { buufer [i] = значение [i]; } unsigned long * y = (unsigned long *) & buufer; вернуть y [0]; } bool _checkMacAddres (байтовый массив []) { результат bool = 0; for (байт i = 0; i <6; i ++) { if (array [i] == 255) { вернуть 0; } if (array [i]> 0) { результат = 1; } } вернуть результат; }
Решил сделать умную комнату под управлением Wemos d1 pro mini.
видео в YouTube как работать с esp8266.
сделал всё, как показано на видео.
C: Users Documents Arduino hardware esp8266com esp8266 cores esp8266 / Arduino.h: 302: 26: фатальная ошибка: pins_arduino.h: такого файла или каталога нет
компиляция прекращена.
Ошибка компиляции для платы LOLIN (WEMOS) D1 mini Pro.
Библиотеки есть все, вставленные ссылки в настройках Arduino IDE, установил пакет с платами, в менеджере плат, сделал всё.
#include <ESP8266WiFi.h> #include <WiFiUdp.h> #include <ESP8266mDNS.h> #include <EEPROM.h> #include <ArduinoOTA.h> extern "C" { #include "user_interface.h"; } bool ESP8266ControllerWifiClient_HRD = 0; bool ESP8266ControllerWifiClient_status = 1; bool ESP8266ControllerWifiClient_isDHCP = 1; bool ESP8266ControllerWifiClient_IsNeedReconect = 0; bool ESP8266ControllerWifiClient_workStatus = 1; char ESP8266ControllerWifiClient_SSID [40] = "Nahim43"; char ESP8266ControllerWifiClient_password [40] = "55672184"; IP-адрес ESP8266ControllerWifiClient_ip (0, 0, 0, 0); IP-адрес ESP8266ControllerWifiClient_dns (0, 0, 0, 1); IP-адрес ESP8266ControllerWifiClient_gateway (0, 0, 0, 1); IP-адрес ESP8266ControllerWifiClient_subnet (255, 255, 255, 0); uint8_t ESP8266ControllerWifiClient_mac [6] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; bool ESP8266ControllerWifi_isNeededRestsrt = 0; WiFiServer ESP8266ControllerWifi_tspWebServer (80); WiFiClient ESP8266ControllerWifi_tspWebServer_client; String ESP8266ControllerWifi_tspWebServer_client_buffer = ""; char * _ESP8266WebInterfacePagesNamesArray [] = {"Главная", "WIFI-KLIENT"}; char * _ESP8266WebInterfacePagesAddressesArray [] = {"../MY_SMART_ROOM", "../MY_SMART_ROOM/wifi-klient"}; String webSettingPageHeader1 = "HTTP / 1.1 200 OK r nКонтент-тип: text / html r n r n <! DOCTYPE HTML> r n <meta charset = " utf-8 "> r п <HTML> г п "; String webSettingPageFooterString = "Разработано специально для собственного пользования"; String webSettingPageHeaderString = "Умная комната"; String _ESP8266WebInterfacePageButton_save = "<input type = " submit "class = " buttonFlp "value = " Сохранить "> </ form>"; String _ESP8266WebInterfacePageButton_reset = "<form action = " "method = " POST "> <input type = " hidden "name = " resetController "value = " reset "> <input type = " submit "class = " buttonFlp "value = " Перезагрузить "> </ form>"; String webSettingPageMainStyle = ".menu {float: left; padding: 1%; отступ: 1%; ширина: 16%; граница: 1px сплошной черный; border-radius: 8px;} .menuItem {font-weight: 600; font- семейство: 'Times New Roman', Times, serif;} .header {отступ: 10px; слева: 0px; справа: 0px; верх: 0px; фон: # 00FFFF; выравнивание текста: по центру; font-weight: 600; шрифт -семейство: 'Times New Roman', Times, с засечками; размер шрифта: 250%;} .content {float: right; ширина: 78%;} .footer {float: left; отступ: 1%; ширина: 98% ; background: # 00FFFF; margin-top: 1%; выравнивание текста: по центру; font-weight: 600; семейство шрифтов: 'Times New Roman', Times, serif; размер шрифта: 150%;}. buttonFlp { ширина: 150px; радиус границы: 20px; фон: # 459DE5; цвет: #fff; размер шрифта: 12px; курсор: указатель; float: left; отступ: 1%; поле: 1%;}. buttonFlp: hover { фон: # 358DE5;} buttonFlp: фокус {контур: нет;} ";. bool isNeededCommitESP8266EEprom = 0; void setup () { EEPROM.begin (86); if (((readByteFromEEPROM (0, 0, 0x0)))! = 148) { (updateByteToEEPROM (0, 0, 0x0, (148))); (updateBooleanToEEPROM (1, 0, 0x0, (1))); (updateUnsignedLongToEEPROM (2, 0, 0x0, (0))); (updateStringToEEPROM (6, 40, 0x0, ("55672184"))); (updateStringToEEPROM (46, 40, 0x0, ("Nahim43"))); EEPROM.commit (); } ESP8266ControllerWifiClient_isDHCP = readBooleanFromEEPROM (1, 0, 0x0); ESP8266ControllerWifiClient_ip = _ipAddressFromUnsignetLong (readUnsignedLongFromEEPROM (2, 0, 0x0)); (readStingFromEEPROM (6, 40, 0x0)). toCharArray (ESP8266ControllerWifiClient_password, 40); (readStingFromEEPROM (46, 40, 0x0)). toCharArray (ESP8266ControllerWifiClient_SSID, 40); ArduinoOTA.setHostname ("СМАРТ-КОМНАТА"); ArduinoOTA.setPassword ((const char *) "0686401742"); ArduinoOTA.begin (); WiFi.mode (WIFI_STA); _esp8266WifiModuleClientReconnect (); ESP8266ControllerWifi_tspWebServer.begin (); } void loop () {ESP8266ControllerWifi_tspWebServer_client = ESP8266ControllerWifi_tspWebServer.available (); if (ESP8266ControllerWifi_tspWebServer_client) { String _WSCReqest = ""; int _WSCPageNumber = 0; задержка (5); while (ESP8266ControllerWifi_tspWebServer_client.available ()) { _WSCReqest.concat (символ (ESP8266ControllerWifi_tspWebServer_client.read ())); } ESP8266ControllerWifi_tspWebServer_client.flush (); _WSCPageNumber = _parseWebServerReqest (_WSCReqest); _sendWebServerPage (_WSCPageNumber); } if (isNeededCommitESP8266EEprom) {EEPROM.commit (); isNeededCommitESP8266EEprom = 0; } if (ESP8266ControllerWifi_isNeededRestsrt) {ESP.restart ();} if (ESP8266ControllerWifiClient_IsNeedReconect) {_esp8266WifiModuleClientReconnect (); ESP8266ControllerWifiClient_IsNeedReconect = 0; } ArduinoOTA.handle (); ESP8266ControllerWifiClient_status = WiFi.status () == WL_CONNECTED; if (ESP8266ControllerWifiClient_status) {if (! ESP8266ControllerWifiClient_HRD) {ESP8266ControllerWifiClient_ip = WiFi.localIP (); ESP8266ControllerWifiClient_subnet = WiFi.subnetMask (); ESP8266ControllerWifiClient_gateway = WiFi.gatewayIP (); ESP8266ControllerWifiClient_dns = WiFi.dnsIP (); WiFi.macAddress (ESP8266ControllerWifiClient_mac); ESP8266ControllerWifiClient_HRD = 1; }} else {ESP8266ControllerWifiClient_HRD = 0;} // Плата: 1 } bool _isTimer (unsigned long startTime, unsigned long period) { unsigned long currentTime; currentTime = миллис (); if (currentTime> = startTime) {return (currentTime> = (startTime + period));} else {return (currentTime> = (4294967295-startTime + period));} } void _sendWebServerPage (int sendPageNumber) { if (sendPageNumber == -1) { вернуть; } if (sendPageNumber == 1) {_sendWebServerPage1 (); вернуть; } if (sendPageNumber == 2) {_sendWebServerPage2 (); вернуть; } _sendWebServerSend404Page (); } void _sendWebServerSend404Page (void) { ESP8266ControllerWifi_tspWebServer_client.print ("HTTP / 1.0 404 не найден r nContent-Type: text / html r n r n <! DOCTYPE HTML> <html> <body> <p> 404 - страница не найдена </ р> </ тело> </ HTML> г п "); задержка (1); ESP8266ControllerWifi_tspWebServer_client.flush (); ESP8266ControllerWifi_tspWebServer_client.stop (); } int _parseWebServerReqest (String reqestAddres) { int index; int result = 0; if ((reqestAddres.indexOf ("POST")) == 0) { _parsePostWebServerReqest (reqestAddres); возврат -1; } Индекс = reqestAddres.indexOf ( "/"); reqestAddres = reqestAddres.substring (index + 1); index = reqestAddres.indexOf (""); reqestAddres = reqestAddres.substring (0, index); if (reqestAddres == "MY_SMART_ROOM") {result = 1;} if (reqestAddres == "MY_SMART_ROOM / wifi-klient") {result = 2;} вернуть результат; } void _parsePostWebServerReqest (String reqestAddres) { int index = reqestAddres.indexOf (" r n r n"); String paramsValue; String params = reqestAddres.substring (index + 4); while (params.length ()> 0) { index = params.indexOf ("&"); if (index == -1) { paramsValue = params; params = ""; } еще { paramsValue = params.substring (0, index); params = params.substring (индекс + 1); } _processingPostWebServerReqestData (paramsValue); } index = reqestAddres.indexOf ("Referer:"); paramsValue = reqestAddres.substring (index + 8); index = paramsValue.indexOf (" r"); paramsValue = paramsValue.substring (0, index); params = "HTTP / 1.0 200 OK r nContent-Type: text / html r n r n <! DOCTYPE HTML> <html> <head> <script type = " text / javascript "> документ .location.replace ( ""; params = params + paramsValue; params = params + ""); </ script> </ head> <body> </ body> </ html> r n "; ESP8266ControllerWifi_tspWebServer_client.print (PARAMS); задержка (1); ESP8266ControllerWifi_tspWebServer_client.flush (); ESP8266ControllerWifi_tspWebServer_client.stop (); } void _processingPostWebServerReqestData (String paramData) { индекс байта = paramData.indexOf ("="); если (индекс <0) {возвращение;} Ключ строки = paramData.substring (0, индекс); Строковое значение = convertPostData (paramData.substring (index + 1)); if (key.equals (String ("resetController"))) {ESP8266ControllerWifi_isNeededRestsrt = 1; вернуть;} if (key.equals (String ("parSetPage162179339E"))) {if (ESP8266ControllerWifiClient_isDHCP! = (value.equals (String ("on")))) {; ESP8266ControllerWifiClient_isDHCP = value.equals (String) (value) (string () on) (string) (value) (string ESP8266ControllerWifiClient_IsNeedReconect = 1; updateBooleanToEEPROM (1, 0, 0x0, ESP8266ControllerWifiClient_isDHCP); } } if (key.equals (String ("parSetPage222532213E"))) {if (checkIPAdressString (value)) { if ((_unsignetLongFromIPAdress (_ipAddressFromString (value)))! = (_unsignetLongFromIPAdress (ESP8266ControllerWifiClient_ip))) { ESP8266ControllerWifiClient_IsNeedReconect = 1; ESP8266ControllerWifiClient_ip.fromString (значение); updateUnsignedLongToEEPROM (2, 0, 0x0, (_unsignetLongFromIPAdress (ESP8266ControllerWifiClient_ip))); }} } if (key.equals (String ("parSetPage114204552E"))) {if (! (value.equals (String (ESP8266ControllerWifiClient_password)))) { ESP8266ControllerWifiClient_IsNeedReconect = 1; value.toCharArray (ESP8266ControllerWifiClient_password, 40); updateStringToEEPROM (6, 40, 0x0, значение); } } if (key.equals (String ("parSetPage226564620E"))) {if (! (value.equals (String (ESP8266ControllerWifiClient_SSID)))) { ESP8266ControllerWifiClient_IsNeedReconect = 1; value.toCharArray (ESP8266ControllerWifiClient_SSID, 40); updateStringToEEPROM (46, 40, 0x0, значение); } } if (key.equals (String ("parSetPage264864222E"))) {if (checkIPAdressString (value)) { if ((_unsignetLongFromIPAdress (_ipAddressFromString (value)))! = (_unsignetLongFromIPAdress (ESP8266ControllerWifiClient_ip))) { ESP8266ControllerWifiClient_IsNeedReconect = 1; ESP8266ControllerWifiClient_ip.fromString (значение); updateUnsignedLongToEEPROM (2, 0, 0x0, (_unsignetLongFromIPAdress (ESP8266ControllerWifiClient_ip))); }} } } String convertPostData (String value) { String result = ""; символ чар; байт-код; int i = 0; String codeString; while (i <value.length ()) { символ = значение. charAt (i); if (symbol == '+') { result.concat (''); } еще { если (символ == '%') { codeString = ""; я ++; codeString.concat (значение [I]); я ++; codeString.concat (значение [I]); code = hexStrToInt (codeString); Serial.println (codeString); Serial.println (код, HEX); result.concat (символ (код)); } еще { result.concat (символ); } } я ++; } вернуть результат; } void _sendWebServerPage1 (void) { printToClient (webSettingPageHeader1, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<head>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<head> <style>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ((webSettingPageMainStyle + ""), & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("" </ style> ", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ head>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<body>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<div class = " header ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient (webSettingPageHeaderString, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ((_ eSP8266SettingWebPageCreateMenu (0)), & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<div class = " content ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ((_eSP8266SettingWebPageATextVisualElement ("", "IP-адрес", (ESP8266ControllerWifiClient_ip.toString ()), 1, 1), & ESP8266ControllerWifi_tspWebServer_clier_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<div class = " footer ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient (webSettingPageFooterString, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ body> </ html>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); commitClient (& ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); } void _sendWebServerPage2 (void) { printToClient (webSettingPageHeader1, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<head>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<head> <style>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ((webSettingPageMainStyle + ""), & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("" </ style> ", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ head>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<body>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<div class = " header ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient (webSettingPageHeaderString, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ((_ eSP8266SettingWebPageCreateMenu (1)), & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<div class = " content ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<form action = " "method = " POST ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ((_eSP8266SettingWebPageInputFieldVisualElement ("", "SSID", ESP8266ControllerWifiClient_SSID, "parSetPage226564620E", "20", 0, 1)), & ESP8266ControllerWifi_vererWerWerSWWSWWSWWSWWSWWS_W_W_W_W_W_W_W_W_W_W_W_P_W printToClient ((_eSP8266SettingWebPageInputFieldVisualElement ("", "PASS", ESP8266ControllerWifiClient_password, "parSetPage114204552E", "20", 0, 1)), & ESP8266ControllerWifi_verererWentWerSWWSWWSWWSWWS_W_W_Wer_Wer_Wer_W_W_W_W_W_W_P printToClient ((_eSP8266SettingWebPageInputFieldVisualElement ("," IP-адрес ", (ESP8266ControllerWifiClient_ip.toString ())," parSetPage222532213E "," 20 ", 1, 1; printToClient ((_eSP8266SettingWebPageCheckBoxVisualElement ("", "DHCP", ESP8266ControllerWifiClient_isDHCP, "parSetPage162179339E")), & ESP8266ControllerWifi_tspWebServerff_Wer_Wer_Wer_Wer_Wer_Server_Cr printToClient (_ESP8266WebInterfacePageButton_save, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient (_ESP8266WebInterfacePageButton_reset, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<div class = " footer ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient (webSettingPageFooterString, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ body> </ html>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); commitClient (& ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); } void printToClient (строковое значение, WiFiClient * sendClient, String * sendBuffer) { for (int i = 0; i <value.length (); i ++) { if (sendBuffer-> length ()> 800) { sendClient-> печать (* sendBuffer); * sendBuffer = ""; } sendBuffer-> CONCAT (value.charAt (я)); } } void commitClient (WiFiClient * sendClient, String * sendBuffer) { if ((sendBuffer-> length ())> 0) { sendClient-> печать (* sendBuffer); } * sendBuffer = ""; sendClient-> заподлицо (); sendClient-> остановки (); } byte readByteFromEEPROM (int адрес, байт bitAddres, байт chipAddres) { вернуть EEPROM.read (адреса); } void updateByteToEEPROM (int адрес, байт bitAddres, байт chipAddres, значение байта) { isNeededCommitESP8266EEprom = 1; вернуть EEPROM.write (адрес, значение); } bool readBooleanFromEEPROM (int адрес, байт bitAddres, байт chipAddres) { byte temp = readByteFromEEPROM (addres, bitAddres, chipAddres); return bitRead (temp, bitAddres); } void updateBooleanToEEPROM (int адрес, байт bitAddres, байт chipAddres, значение bool) { byte temp = readByteFromEEPROM (addres, bitAddres, chipAddres); bitWrite (temp, bitAddres, value); updateByteToEEPROM (addres, bitAddres, chipAddres, temp); } unsigned long readUnsignedLongFromEEPROM (int адрес, байт bitAddres, байт chipAddres) { байт х [4]; for (байт i = 0; i <4; i ++) {x [i] = readByteFromEEPROM ((адреса + i), bitAddres, chipAddres);} длинная без знака * y = (длинная без знака *) & x; вернуть y [0]; } void updateUnsignedLongToEEPROM (int адрес, байт bitAddres, байт chipAddres, длинное значение без знака) { байт * x = (байт *) & значение; for (байт i = 0; i <4; i ++) {updateByteToEEPROM ((адрес + i), bitAddres, chipAddres, x [i]);} } char readCharFromEEPROM (int адрес, байт bitAddres, байт chipAddres) { вернуть readByteFromEEPROM (адреса, битовые адреса, чиповые адреса); } void updateCharToEEPROM (int адрес, байт bitAddres, байт chipAddres, значение символа) { updateByteToEEPROM (адреса, bitAddres, chipAddres, значение); } Строка readStingFromEEPROM (int addres, int dataLength, byte chipAddres) { String result = ""; char tempChar; for (int i = 0; i <dataLength; i ++) { tempChar = readCharFromEEPROM ((адреса + i), 0, chipAddres); if (byte (tempChar) == 0) { вернуть результат; } result.concat (tempChar); } вернуть результат; } void updateStringToEEPROM (int addres, int dataLength, byte chipAddres, String value) { char tempChar; for (int i = 0; i <dataLength; i ++) { if (i <value.length ()) { tempChar = value.charAt (i); } еще { tempChar = char (0); } updateCharToEEPROM ((адреса + i), 0, chipAddres, tempChar); } } String _eSP8266SettingWebPageAllVisualElementsHeader (стиль строки, метка строки) { String result = "<div"; if (style.length ()> 0) { result.concat ("class = " "); result.concat (стиль); result.concat ( "" "); } result.concat ("> <p>"); result.concat (метка); result.concat ( "<br>"); вернуть результат; } String _eSP8266SettingWebPageATextVisualElement (стиль строки, метка строки, значение строки, bool isIP, bool isClient) { String result = _eSP8266SettingWebPageAllVisualElementsHeader (style, label); if (isClient && isIP && ESP8266ControllerWifiClient_isDHCP && (! ESP8266ControllerWifiClient_status)) {result.concat ("??. ??. ??. ??");} else {result.concat (value);} result.concat ( "</ p> </ DIV>"); вернуть результат; } Строка _eSP8266SettingWebPageCreateMenu (int pageIndex) { String result = "<div"; result.concat ( "класс = " меню ""); result.concat ( ">"); для (int i = 0; i <2; i ++) { result.concat ("<div"); result.concat ( "класс = " MENUITEM ""); result.concat ( ">"); if (i == pageIndex) {result.concat (_ESP8266WebInterfacePagesNamesArray [i]);} else { result.concat ("<a href = " "); result.concat (_ESP8266WebInterfacePagesAddressesArray [I]); result.concat ( ""> "); result.concat (_ESP8266WebInterfacePagesNamesArray [I]); result.concat ( "</a>"); } result.concat ( "</ DIV>"); } result.concat ( "</ DIV>"); вернуть результат; } String _eSP8266SettingWebPageInputFieldVisualElement (стиль строки, метка строки, значение строки, имя строки, максимальная длина строки, bool isIP, bool isClient) { if (isClient && isIP && ESP8266ControllerWifiClient_isDHCP) {return _eSP8266SettingWebPageATextVisualElement (стиль, метка, значение, isIP, isClient);} String result = _eSP8266SettingWebPageAllVisualElementsHeader (style, label); result.concat ("<input type = " text "name = " "); result.concat (имя); result.concat ("" value = ""); result.concat (значение); result.concat ("" maxlength = ""); result.concat (maxlength); result.concat (""> </ p> </ div> "); вернуть результат; } String _eSP8266SettingWebPageCheckBoxVisualElement (стиль строки, метка строки, значение bool, имя строки) { String result = "<div"; if (style.length ()> 0) { result.concat ( "класс = " "); result.concat (стиль); result.concat ( "" "); } result.concat ("> <label> <input type = " checkbox "id = " "); result.concat (имя); result.concat ( "1 " "); if (value) {result.concat ("флажок");} result.concat ( "/>"); result.concat (метка); result.concat ("</ label> <input type = " hidden "name = " "); result.concat (имя); result.concat ("" id = ""); result.concat (имя); result.concat ( "2"); result.concat ("" value = ""); if (value) {result.concat ("on");} else {result.concat ("off");} result.concat (""> <script> var el "); result.concat (имя); result.concat ("= document.querySelector ('#"); result.concat (имя); result.concat ( "1"); result.concat ("'); el"); result.concat (имя); result.concat (".onclick = function () {if (el"); result.concat (имя); result.concat (".checked) {document.getElementById ('"); result.concat (имя); result.concat ( "2"); result.concat ("'). value =' on ';} else {document.getElementById ('"); result.concat (имя); result.concat ( "2"); result.concat ("'). value =' off ';}} </ script> </ div>"); вернуть результат; } int hexStrToInt (String instring) { byte len = instring.length (); if (len == 0) вернет 0; int result = 0; for (байт i = 0; i <8; i ++) // только первые 8 цыфар влезуть в uint32 { char ch = instring [i]; if (ch == 0) перерыв; результат << = 4; if (isdigit (ch)) результат = результат | (ch - '0'); иначе результат = результат | (ch - 'A' + 10); } вернуть результат; } void _esp8266WifiModuleClientReconnect () { if (_checkMacAddres (ESP8266ControllerWifiClient_mac)) {wifi_set_macaddr (0, const_cast <uint8 *> (ESP8266ControllerWifiClient_mac));} if (ESP8266ControllerWifiClient_isDHCP) {WiFi.config (0U, 0U, 0U, 0U, 0U); } еще { WiFi.config (ESP8266ControllerWifiClient_ip, ESP8266ControllerWifiClient_gateway, ESP8266ControllerWifiClient_subnet, ESP8266ControllerWifiClient_dns, ESP8266ControllerWifiClient_dns); } WiFi.begin (ESP8266ControllerWifiClient_SSID, ESP8266ControllerWifiClient_password); } IPAddress _ipAddressFromUnsignetLong (длинное значение без знака) { IP-адрес результата; байт * x = (байт *) & значение; for (байт i = 0; i <4; i ++) { результат [i] = x [i]; } вернуть результат; } bool checkIPAdressString (String value) { IP-адрес temp; вернуть temp.fromString (значение); } IPAddress _ipAddressFromString (String value) { IP-адрес temp; temp.fromString (значение); вернуть темп; } unsigned long _unsignetLongFromIPAdress (значение IPAddress) { байтовый буфер [4] = {0, 0, 0, 0}; for (байт i = 0; i <4; i ++) { buufer [i] = значение [i]; } unsigned long * y = (unsigned long *) & buufer; вернуть y [0]; } bool _checkMacAddres (байтовый массив []) { результат bool = 0; for (байт i = 0; i <6; i ++) { if (array [i] == 255) { вернуть 0; } if (array [i]> 0) { результат = 1; } } вернуть результат; }
всем добрый день. помогите пожалуйста. возникла проблема с wemos d1 r2. вернее с компиляцией скетча. так как я полный 0 в этом. не могу понять что от меня хочет arduino ide. проект создан в flprog. в ардуино уно грузится без проблем. а в wemos не хочет. плата рабочая 100%. примеры грузятся. ошибка компиляции. текст после онлайн неревода
Arduino: 1.8.11 (Windows 7), Плата: «LOLIN (WEMOS) D1 R2 & mini, 80 МГц, Флэш-память, Отключена (новые аборты на оом), Отключена, Все шифры SSL (наиболее совместимые), кэш 32 КБ + 32 КБ IRAM (сбалансированный), Используйте макросы pgm_read для IRAM / PROGMEM, 4 МБ (FS:нет OTA: ~ 1019 КБ), Память v2 меньше, Отключена, Нет, Только эскиз, 921600»
В файле, включенном из f:FLProgideV5librariesEncoder/Encoder.h:46,
из C:UsersAlexeyAppDataLocalTempflprogpr1pr1.ino:5:
f:FLProgideV5librariesEncoder/utility/interrupt_pins.h:150:2 : ошибка: #ошибка «Прерывания неизвестны для этой платы, пожалуйста, добавьте в этот код»
150 | #ошибка «Прерывания неизвестны для этой платы, пожалуйста, добавьте в этот код»
| ^~~~~
f:FLProgideV5librariesEncoder/utility/interrupt_pins.h:153:2 : ошибка: #ошибка «Кодировщику требуются контакты прерывания, но на этой плате их нет :(«
153 | #ошибка «Кодировщику требуются контакты прерывания, но на этой плате их нет :(«
| ^~~~~
f:FLProgideV5librariesEncoder/utility/interrup