Добрый день.
При компиляции для 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
Решил сделать умную комнату под управлением 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; } } вернуть результат; }
@Сотнег,
Arduino: 1.8.19 (Windows 10), Плата:»LOLIN(WEMOS) D1 R2 & mini, 80 MHz, Flash, Disabled (new can abort), All SSL ciphers (most compatible), 4MB (FS:3MB OTA:~512KB), v2 Higher Bandwidth, Disabled, None, Only Sketch, 115200″
ПРЕДУПРЕЖДЕНИЕ: библиотека Timezone должна запускаться на архитектурах avr и может быть несовместима с вашей платой на архитектуре esp8266.
In file included from C:Usersd5613DesktopGyverLamp-masterfirmwaregunner47_v2.87in1gunner47_v2.87in1.ino:296:0:
C:Program Files (x86)ArduinolibrariesFastLED-3.2.9/FastLED.h:14:21: note: #pragma message: FastLED version 3.002.009
# pragma message «FastLED version 3.002.009»
^
In file included from C:Program Files (x86)ArduinolibrariesFastLED-3.2.9/platforms/esp/8266/fastled_esp8266.h:4:0,
from C:Program Files (x86)ArduinolibrariesFastLED-3.2.9/platforms.h:31,
from C:Program Files (x86)ArduinolibrariesFastLED-3.2.9/FastLED.h:52,
from C:Usersd5613DesktopGyverLamp-masterfirmwaregunner47_v2.87in1gunner47_v2.87in1.ino:296:
C:Program Files (x86)ArduinolibrariesFastLED-3.2.9/platforms/esp/8266/clockless_esp8266.h: In static member function ‘static uint32_t ClocklessController<DATA_PIN, T1, T2, T3, RGB_ORDER, XTRA0, FLIP, WAIT_TIME>::showRGBInternal(PixelController<RGB_ORDER>)’:
C:Program Files (x86)ArduinolibrariesFastLED-3.2.9/platforms/esp/8266/clockless_esp8266.h:104:70: error: ‘INTERRUPT_THRESHOLD’ was not declared in this scope
if((int32_t)(__clock_cycles()-last_mark) > (T1+T2+T3+((WAIT_TIME-INTERRUPT_THRESHOLD)*CLKS_PER_US))) { sei(); return 0; }
^
In file included from C:Program Files (x86)ArduinolibrariesFastLED-3.2.9/platforms/esp/8266/fastled_esp8266.h:5:0,
from C:Program Files (x86)ArduinolibrariesFastLED-3.2.9/platforms.h:31,
from C:Program Files (x86)ArduinolibrariesFastLED-3.2.9/FastLED.h:52,
from C:Usersd5613DesktopGyverLamp-masterfirmwaregunner47_v2.87in1gunner47_v2.87in1.ino:296:
C:Program Files (x86)ArduinolibrariesFastLED-3.2.9/platforms/esp/8266/clockless_block_esp8266.h: In static member function ‘static uint32_t InlineBlockClocklessController<LANES, FIRST_PIN, T1, T2, T3, RGB_ORDER, XTRA0, FLIP, WAIT_TIME>::showRGBInternal(PixelController<RGB_ORDER, LANES, (((1 << ((LANES < 6) ? LANES : 6)) — 1) & 65535l)>&)’:
C:Program Files (x86)ArduinolibrariesFastLED-3.2.9/platforms/esp/8266/clockless_block_esp8266.h:145:70: error: ‘INTERRUPT_THRESHOLD’ was not declared in this scope
if((int32_t)(__clock_cycles()-last_mark) > (T1+T2+T3+((WAIT_TIME-INTERRUPT_THRESHOLD)*CLKS_PER_US))) { os_intr_unlock(); return 0; }
^
In file included from C:Program Files (x86)ArduinolibrariesFastLED-3.2.9/FastLED.h:65:0,
from C:Usersd5613DesktopGyverLamp-masterfirmwaregunner47_v2.87in1gunner47_v2.87in1.ino:296:
C:Program Files (x86)ArduinolibrariesFastLED-3.2.9/fastspi.h: At global scope:
C:Program Files (x86)ArduinolibrariesFastLED-3.2.9/fastspi.h:115:23: note: #pragma message: No hardware SPI pins defined. All SPI access will default to bitbanged output
# pragma message «No hardware SPI pins defined. All SPI access will default to bitbanged output»
^
exit status 1
Ошибка компиляции для платы LOLIN(WEMOS) D1 R2 & mini.
Неверная библиотека найдена в C:Program Files (x86)Arduinolibrariesandroid: нет заголовочных файлов (.h), найденных в C:Program Files (x86)Arduinolibrariesandroid
Неверная библиотека найдена в C:Program Files (x86)Arduinolibrariescomposite_matrixes: нет заголовочных файлов (.h), найденных в C:Program Files (x86)Arduinolibrariescomposite_matrixes
Неверная библиотека найдена в C:Program Files (x86)Arduinolibrariesfirmware: нет заголовочных файлов (.h), найденных в C:Program Files (x86)Arduinolibrariesfirmware
Неверная библиотека найдена в C:Program Files (x86)Arduinolibrariesschemes: нет заголовочных файлов (.h), найденных в C:Program Files (x86)Arduinolibrariesschemes
Неверная библиотека найдена в C:Program Files (x86)Arduinolibrariesuser-manual: нет заголовочных файлов (.h), найденных в C:Program Files (x86)Arduinolibrariesuser-manual
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
«Показать подробный вывод во время компиляции»
Вот что получается(((
@Сотнег,
Не сочти за труд ,объясни что неправильно делаю)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
Asked
2 years, 10 months ago
Viewed
553 times
I have a wemos d1 mini and a mpu 6060 sensor. I am trying to send the data from the sensor to Firebase. However i have come across a hurdle which i cant seem to solve. This is my error, can you help me out with this issue?
Error compiling for board LOLIN(WEMOS) D1 R2 & mini.
In file included from C:UsersZakariaDocumentsArduinolibrariesfirebase-arduino-mastersrc/Firebase.h:30:0,
from C:UsersZakariaDesktopWORKING_ACCELERAMETOR_BACKUPWORKING_ACCELERAMETOR_BACKUP.ino:4:
C:UsersZakariaDocumentsArduinolibrariesfirebase-arduino-mastersrc/FirebaseObject.h:109:11: error: StaticJsonBuffer is a class from ArduinoJson 5. Please see arduinojson.org/upgrade to learn how to upgrade your program to ArduinoJson version 6
std::shared_ptr<StaticJsonBuffer<FIREBASE_JSONBUFFER_SIZE>> buffer_;
^
In file included from C:UsersZakariaDesktopWORKING_ACCELERAMETOR_BACKUPWORKING_ACCELERAMETOR_BACKUP.ino:4:0:
C:UsersZakariaDocumentsArduinolibrariesfirebase-arduino-mastersrc/Firebase.h:86:11: error: StaticJsonBuffer is a class from ArduinoJson 5. Please see arduinojson.org/upgrade to learn how to upgrade your program to ArduinoJson version 6
std::shared_ptr<StaticJsonBuffer<FIREBASE_JSONBUFFER_SIZE>> buffer_;
^
Using library FirebaseJson at version 2.3.3 in folder: C:UsersZakariaDocumentsArduinolibrariesFirebaseJson
Using library firebase-arduino-master at version 0.1 in folder: C:UsersZakariaDocumentsArduinolibrariesfirebase-arduino-master
Using library ArduinoJson at version 6.15.0 in folder: C:UsersZakariaDocumentsArduinolibrariesArduinoJson
Using library ESP8266HTTPClient at version 1.2 in folder: C:UsersZakariaAppDataLocalArduino15packagesesp8266hardwareesp82662.5.0librariesESP8266HTTPClient
Using library ESP8266WiFi at version 1.0 in folder: C:UsersZakariaAppDataLocalArduino15packagesesp8266hardwareesp82662.5.0librariesESP8266WiFi
Using library Wire at version 1.0 in folder: C:UsersZakariaAppDataLocalArduino15packagesesp8266hardwareesp82662.5.0librariesWire
exit status 1
Error compiling for board LOLIN(WEMOS) D1 R2 & mini.
asked Apr 5, 2020 at 14:47
1
Asked
2 years, 10 months ago
Viewed
553 times
I have a wemos d1 mini and a mpu 6060 sensor. I am trying to send the data from the sensor to Firebase. However i have come across a hurdle which i cant seem to solve. This is my error, can you help me out with this issue?
Error compiling for board LOLIN(WEMOS) D1 R2 & mini.
In file included from C:UsersZakariaDocumentsArduinolibrariesfirebase-arduino-mastersrc/Firebase.h:30:0,
from C:UsersZakariaDesktopWORKING_ACCELERAMETOR_BACKUPWORKING_ACCELERAMETOR_BACKUP.ino:4:
C:UsersZakariaDocumentsArduinolibrariesfirebase-arduino-mastersrc/FirebaseObject.h:109:11: error: StaticJsonBuffer is a class from ArduinoJson 5. Please see arduinojson.org/upgrade to learn how to upgrade your program to ArduinoJson version 6
std::shared_ptr<StaticJsonBuffer<FIREBASE_JSONBUFFER_SIZE>> buffer_;
^
In file included from C:UsersZakariaDesktopWORKING_ACCELERAMETOR_BACKUPWORKING_ACCELERAMETOR_BACKUP.ino:4:0:
C:UsersZakariaDocumentsArduinolibrariesfirebase-arduino-mastersrc/Firebase.h:86:11: error: StaticJsonBuffer is a class from ArduinoJson 5. Please see arduinojson.org/upgrade to learn how to upgrade your program to ArduinoJson version 6
std::shared_ptr<StaticJsonBuffer<FIREBASE_JSONBUFFER_SIZE>> buffer_;
^
Using library FirebaseJson at version 2.3.3 in folder: C:UsersZakariaDocumentsArduinolibrariesFirebaseJson
Using library firebase-arduino-master at version 0.1 in folder: C:UsersZakariaDocumentsArduinolibrariesfirebase-arduino-master
Using library ArduinoJson at version 6.15.0 in folder: C:UsersZakariaDocumentsArduinolibrariesArduinoJson
Using library ESP8266HTTPClient at version 1.2 in folder: C:UsersZakariaAppDataLocalArduino15packagesesp8266hardwareesp82662.5.0librariesESP8266HTTPClient
Using library ESP8266WiFi at version 1.0 in folder: C:UsersZakariaAppDataLocalArduino15packagesesp8266hardwareesp82662.5.0librariesESP8266WiFi
Using library Wire at version 1.0 in folder: C:UsersZakariaAppDataLocalArduino15packagesesp8266hardwareesp82662.5.0librariesWire
exit status 1
Error compiling for board LOLIN(WEMOS) D1 R2 & mini.
asked Apr 5, 2020 at 14:47
1
IMHO самое верное решение — не используйте это г*но(ESP series) — оно сырое,ненадежное,глючное -, может моргать светодиодом и пойдет, но не более(2 года стажа е*ли, если что)..
На работе у нас несколько штук работают более 2-х лет — полет нормальный. В гараже на этой же плате wemos mini pro сделал точку доступа. Кроме того сделал 2 направленные антенны (пушки) к нему. пока не подключал, хочу сначала с этой проблемой разобраться.
Может кто сможет помочь со скетчем?
Добавлено after 3 hours 14 minutes 3 seconds:
Подредактировал, но все равно ошибка- Ошибка компиляции для платы LOLIN(WEMOS) D1 mini Pro.? В последней версии IDEошибка другая — expected unqualified-id before ‘)’ token
«`
/**************************************************************
http://www.EK21 — произвосдство и поставка ЭНЕРГЕТИЧЕСКОГО ОБОРУДОВАНИЯ.
**************************************************************
* This example runs directly on ESP8266 chip.
*
* You need to install this for ESP8266 development:
* https://github.com/esp8266/Arduino
*
* Please be sure to select the right ESP8266 module
* in the Tools -> Board menu!
*
* Change WiFi ssid, pass, and Blynk auth token to run
*
**************************************************************/
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#define DHT1PIN D0//датчик на улице
#define DHT2PIN D4//датчик в гараже
#define DHT3PIN D3//датчик в подвале
#define DHT4PIN D2//датчик в смотровой яме
#define DHT1TYPE DHT22)
#define DHT2TYPE DHT22)
#define DHT3TYPE DHT11)
#define DHT4TYPE DHT11)
DHT dht1(DHT1PIN, DHT1TYPE);
DHT dht2(DHT2PIN, DHT2TYPE);
DHT dht3(DHT3PIN, DHT3TYPE);
DHT dht4(DHT4PIN, DHT4TYPE);
#define PIN D1 //контролируемый пин
WidgetLED fan1(V8); // Светодиод на смарте
#define PIN D5 //контролируемый пин
WidgetLED fan2(V9); // Светодиод на смарте
#define PIN D6 //контролируемый пин
WidgetLED fan3(V10); // Светодиод на смарте
int stat = 0;
int maxHum = 60;
#include <SimpleTimer.h> //таймер
SimpleTimer timer;
char auth[] = «123345678901234567890»;
void sendOnOff()
{
int x = digitalRead (fan1);//читаем пин модуля
if (x == 1) {//проверим состояние
led fan1.on(); //вкл вирт.светодиод
}
else { //иначе выключим
led fan1.off();
}
int x = digitalRead (fan2);
if (x == 1) {//проверим состояние
led fan2.on(); //вкл вирт.светодиод
}
else { //иначе выключим
led fan2.off();
}
int x = digitalRead (fan3);
if (x == 1) {//проверим состояние
led fan3.on(); //вкл вирт.светодиод
}
else { //иначе выключим
led fan3.off();
}
}
void setup()
{
Serial.begin(115200);
Blynk.begin(auth, «ASUS», «ZipandSergey»);
dht1.begin();
dht2.begin();
dht3.begin();
dht4.begin();
pinMode(fan1, OUTPUT);
pinMode(fan2, OUTPUT);
pinMode(fan3, OUTPUT);
timer.setInterval(1000, sendOnOff);//устанавливаем перезапуск sendOnOff с интервалом 1с.
}
BLYNK_WRITE(V1) // запрос данных с датчика
{
stat = param.asInt();
}
void loop()
{
Blynk.run();
timer.run();
}
void Send(){
float h2 = dht2.readHumidity();
// Read temperature as Celsius (the default)
float t2 = dht2.readTemperature();
if (stat == 1)
{
Blynk.virtualWrite(V2, h);
Blynk.virtualWrite(V3, t);
}
float h3= dht3.readHumidity();
// Read temperature as Celsius (the default)
float t3= dht3.readTemperature();
if (stat == 1)
{
Blynk.virtualWrite(V4, h);
Blynk.virtualWrite(V5, t);
}
float h4 = dht4.readHumidity();
// Read temperature as Celsius (the default)
float t4 = dht4.readTemperature();
if (stat == 1)
{
Blynk.virtualWrite(V6, h);
Blynk.virtualWrite(V7, t);
}
if(h2 > maxHum)
{
digitalWrite(fan2, HIGH);
}
else if (h2 < (maxHum — 5) ) // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
{
digitalWrite(fan, LOW);
}
if(h3> maxHum)
{
digitalWrite(fan3, HIGH);
}
else if (h3< (maxHum — 5) ) // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
{
digitalWrite(fan, LOW);
}
if(h4 > maxHum)
{
digitalWrite(fan4, HIGH);
}
else if (h4 < (maxHum — 5) ) // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
{
digitalWrite(fan, LOW);
}
// проверяем, были ли ошибки при считывании и, если были, начинаем заново
if (isnan(h1) || isnan(t1)) {
Serial.println(«Failed to read from DHT1 sensor!»);
} else {
Serial.print(«Humidity1: «);
Serial.print(h1);
Serial.print(» %t»);
Serial.print(«Temperature1: «);
Serial.print(t1);
Serial.println(» *C «);
}
if (isnan(h2) || isnan(t2)) {
Serial.println(«Failed to read from DHT2 sensor!»);
} else {
Serial.print(«Humidity2: «);
Serial.print(h2);
Serial.print(» %t»);
Serial.print(«Temperature2: «);
Serial.print(t2);
Serial.println(» *C «);
}
if (isnan(h3) || isnan(t3)) {
Serial.println(«Failed to read from DHT3 sensor!»);
} else {
Serial.print(«Humidity3: «);
Serial.print(h3);
Serial.print(» %t»);
Serial.print(«Temperature3: «);
Serial.print(t3);
Serial.println(» *C «);
}
if (isnan(h4) || isnan(t4)) {
Serial.println(«Failed to read from DHT4 sensor!»);
} else {
Serial.print(«Humidity4: «);
Serial.print(h4);
Serial.print(» %t»);
Serial.print(«Temperature4: «);
Serial.print(t4);
Serial.println(» *C «);
}
Serial.println();
}