Ошибка компиляции "ISO C++ forbids comparison between pointer and integer [-fpermissive]"
- Войдите на сайт для отправки комментариев
Вс, 04/06/2017 - 13:44
Всем добра!
Arduino IDE выдает ошибку при компиляции кода для esp 12e
ISO C++ forbids comparison between pointer and integer [-fpermissive]
if (Otoplenie == 1 && Mode == 0) //Условие для включения отопления в доме (0 - выкл; 1 - вкл)
{
if (T2 <= TargetTemp2 - 10) //Условие для включения отопления
{ // При температуре Т2 <= Предельной
digitalWrite(PinSSR5, LOW); // Реле 5 вкл (Котел ЦО) на пине 7
digitalWrite(PinSSR4, LOW); // Реле 4 вкл (Насос ЦО обр.) на пине 6
}
else if (T2 >= TargetTemp2 + 1) //Условие для выключения отопления
{ // При температуре Т2 <= Предельной
digitalWrite(PinSSR5, HIGH); // Реле 5 выкл (Котел ЦО) на пине 7
}
}
else if (Otoplenie == 0 && Mode == 0) //Условие для выключения обогрева дома
{
digitalWrite(PinSSR5, HIGH); // Реле 5 выкл (Котел ЦО) на пине 7
digitalWrite(PinSSR4, HIGH); // Реле 4 выкл (Насос ЦО обр.) на пине 6
}
А можно скриншот с ошибкой?
Скриншот с ошибкой
http://upload.akusherstvo.ru/images/1309038.png
http://upload.akusherstvo.ru/images/1309038.png
Уважаемый ТС (Топик стартер)...
можно вас попросить перевести на понятный вам язык фразу "Temp2 was not declared in this scope"?
И хочется узнать, какие действия вы планируете в связи с этой диагностикой?
(...ушел материться в сад...)
Прошу прощения за свою неграмотность. Сказать что я новичок - это значит преувеличить)
Всё вроди как получилось, но проверить не могу т.к. условие будет выполняться тогда, когда в ячейке еепрома будет о или 1. Этот вопрос тоже не могу решить.
Снизу выкладываю весь код
#include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266mDNS.h> #include <EEPROM.h> // Библиотека памяти #include <OneWire.h> #include <DallasTemperature.h> OneWire oneWire(5); // вход датчиков 18b20 DallasTemperature ds(&oneWire); DeviceAddress Temp1 = {0x28, 0xFF, 0x4E, 0x70, 0x84, 0x16, 0x05, 0x2E}; // Адрес датчика температуры Т1 (ПИН 9) (2 полоски) (28 FF 4E 70 84 16 5 2E) DeviceAddress Temp2 = {0x28, 0xFF, 0x06, 0x3D, 0x82, 0x16, 0x05, 0x55}; // Адрес датчика температуры Т2 (ПИН 9) (1 полоска) (28 FF 6 3D 82 16 5 55) DeviceAddress Temp7 = {0x28, 0xFF, 0x8A, 0x99, 0x84, 0x16, 0x05, 0xC9}; // Адрес датчика температуры Тбак (ПИН 9) (3 полоски) (28 FF 8A 99 84 16 5 C9) DeviceAddress Temp13 = {0x28, 0xFF, 0xDA, 0x04, 0xB5, 0x16, 0x03, 0x88}; // Адрес датчика температуры Т13 (ПИН 9) (4 полоски) (28 FF DA 4 B5 16 3 88) DeviceAddress TempNV = {0x28, 0xFF, 0x2A, 0x07, 0xC1, 0x16, 0x04, 0x54}; // Адрес датчика температуры ЗАРЕЗЕРВИРОВАННЫЙ (ПИН 9) (5 полосок) (28 FF 2A 7 C1 16 4 54) MDNSResponder mdns; // Wi-Fi const char* ssid = "ergeykl"; const char* password = "seredinskoe"; byte arduino_mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED }; IPAddress ip(192,168,0,200); IPAddress gateway(192,168,0,1); IPAddress subnet(255,255,255,0); ESP8266WebServer server(80); int PinSSR1 = 4; // Реле SSR 1 (Электрокотел ГВС) на пине D2 int PinSSR2 = 0; // Реле 2 (Клапан ГВС 7) на пине D3 int PinSSR3 = 2; // Реле 3 (Клапан ГВС 13) на пине D4 int PinSSR4 = 14; // Реле 4 (Насос ЦО обр.) на пине D5 int PinSSR5 = 12; // Реле 5 (Котел ЦО) на пине D6 int PinSSR6 = 13; // Реле 6 (Насос ГВС) на пине D7 int PinSSR7 = 15; // Реле 7 (Клапан ГВС 7') на пине D8 byte TargetTemp1; // переменная для значения сработки во флеше byte TargetTemp2; // переменная для значения сработки во флеше byte TargetTemp3; // переменная для значения сработки во флеше byte Otoplenie; // Работа Отопления (0 - выкл; 1 - вкл) byte GVS; // Работа ГВС (0 - выкл; 1 - вкл) byte Mode; // Режим поддержания темп-ры Отопления (0 - выкл; 1 - вкл) void setup(void){ pinMode(PinSSR1, OUTPUT); //Назначение пина на выход. Реле SSR 1 (Электрокотел ГВС) на пине D2 digitalWrite(PinSSR1, HIGH); //Изначально Реле 1 ВЫКЛ pinMode(PinSSR2, OUTPUT); //Назначение пина на выход. Реле 2 (Клапан ГВС 7) на пине D3 digitalWrite(PinSSR2, HIGH); //Изначально Реле 2 ВЫКЛ pinMode(PinSSR3, OUTPUT); //Назначение пина на выход. Реле 3 (Клапан ГВС 13) на пине D4 digitalWrite(PinSSR3, HIGH); //Изначально Реле 3 ВЫКЛ pinMode(PinSSR4, OUTPUT); //Назначение пина на выход. Реле 4 (Насос ЦО обр.) на пине D5 digitalWrite(PinSSR4, HIGH); //Изначально Реле 4 ВЫКЛ pinMode(PinSSR5, OUTPUT); //Назначение пина на выход. Реле 5 (Котел ЦО) на пине D6 digitalWrite(PinSSR5, HIGH); //Изначально Реле 5 ВЫКЛ pinMode(PinSSR6, OUTPUT); //Назначение пина на выход. Реле 6 (Насос ГВС) на пине D7 digitalWrite(PinSSR6, HIGH); //Изначально Реле 6 ВЫКЛ pinMode(PinSSR7, OUTPUT); //Назначение пина на выход. Реле 7 (Клапан ГВС 7') на пине D8 digitalWrite(PinSSR7, HIGH); //Изначально Реле 7 ВЫКЛ TargetTemp1 = EEPROM.read(0); // Чтение "предельной" темп-ры в ячейке 1 (Тн.в.) TargetTemp2 = EEPROM.read(2); // Чтение "предельной" темп-ры в ячейке 2 (ЦО Т2) TargetTemp3 = EEPROM.read(4); // Чтение "предельной" темп-ры в ячейке 3 (ГВС Т13) Otoplenie = EEPROM.read(6); // Чтение работы Отопления в ячейке 4 GVS = EEPROM.read(8); // Чтение работы ГВС в ячейке 5 Mode = EEPROM.read(10); // Чтение режима поддержания темп-ры Отопления в ячейке 6 ds.begin(); delay(100); Serial.begin(115200); WiFi.begin(ssid, password); WiFi.config(ip, gateway, subnet); Serial.println(""); // Wait for connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); if (mdns.begin("esp8266", WiFi.localIP())) { Serial.println("MDNS responder started"); } server.on("/", [](){ server.send(200, "text/html", webPage()); }); server.begin(); Serial.println("HTTP server started"); } void loop(void){ server.handleClient(); ds.requestTemperatures(); // считываем температуру с датчиков float Temp1; //Т1 (ПИН 9) (2 полоски) (28 FF 4E 70 84 16 5 2E) float Temp2; //Т2 (ПИН 9) (1 полоска) (28 FF 6 3D 82 16 5 55) float Temp7; //Тбак (ПИН 9) (3 полоски) (28 FF 8A 99 84 16 5 C9) float Temp13; //Т13 (ПИН 9) (4 полоски) (28 FF DA 4 B5 16 3 88) float TempNV; //ЗАРЕЗЕРВИРОВАННЫЙ (ПИН 9) (5 полосок) (28 FF 2A 7 C1 16 4 54) if (Otoplenie == 1) //Условие для включения отопления в доме (0 - выкл; 1 - вкл) { if ( Temp2 <= TargetTemp2 - 10 ) //Условие для включения отопления { // При температуре Т2 <= Предельной digitalWrite(PinSSR5, LOW); // Реле 5 вкл (Котел ЦО) на пине 7 digitalWrite(PinSSR4, LOW); // Реле 4 вкл (Насос ЦО обр.) на пине 6 } else if ( Temp2 >= TargetTemp2 + 1 ) //Условие для выключения отопления { // При температуре Т2 <= Предельной digitalWrite(PinSSR5, HIGH); // Реле 5 выкл (Котел ЦО) на пине 7 } } else if ( Otoplenie == 0 ) //Условие для выключения обогрева дома { digitalWrite(PinSSR5, HIGH); // Реле 5 выкл (Котел ЦО) на пине 7 digitalWrite(PinSSR4, HIGH); // Реле 4 выкл (Насос ЦО обр.) на пине 6 } if ( GVS == 1 ) //Условие для включения ГВС в доме (0 - выкл; 1 - вкл) { if ( Temp13 <= TargetTemp3 - 5 ) //Условие для включения ГВС { digitalWrite(PinSSR1, LOW); // Реле 1 вкл (Электрокотел ГВС) на пине 3 digitalWrite(PinSSR6, LOW); // Реле 6 вкл (Насос ГВС) на пине 8 } else if ( Temp13 >= TargetTemp3 + 1 ) //Условие для выключения ГВС { // При температуре Т13 <= Предельной digitalWrite(PinSSR1, HIGH); // Реле 1 вкл (Электрокотел ГВС) на пине 3 } } else if ( GVS == 0 ) //Условие для выключения ГВС { // При температуре Т13 <= Предельной digitalWrite(PinSSR1, HIGH); // Реле 1 вкл (Электрокотел ГВС) на пине 3 digitalWrite(PinSSR6, HIGH); // Реле 6 вкл (Насос ГВС) на пине 8 } if ( Mode == 1 && Otoplenie == 0 ) //Условие для включения режима поддержания температуры в доме зимой (0 - выкл; 1 - вкл) { if ( TempNV <= TargetTemp1 && Temp2 <= TargetTemp2-10 ) //Условие для включения обогрева дома { digitalWrite(PinSSR1, LOW); // Реле 1 вкл (Электрокотел ГВС) на пине 3 digitalWrite(PinSSR2, LOW); // Реле 2 вкл (Клапан ГВС 7) на пине 4 digitalWrite(PinSSR3, LOW); // Реле 3 вкл (Клапан ГВС 13) на пине 5 digitalWrite(PinSSR4, LOW); // Реле 4 вкл (Насос ЦО обр.) на пине 6 } else if ( Temp2 >= TargetTemp2 + 1 ) //Условие для выключения обогрева дома { digitalWrite(PinSSR1, HIGH); // Реле 1 выкл (Электрокотел ГВС) на пине 3 } } else if ( Mode == 0 && Otoplenie == 0 ) //Условие для выключения всех систем { digitalWrite(PinSSR1, HIGH); // Реле 1 выкл (Электрокотел ГВС) на пине 3 digitalWrite(PinSSR2, HIGH); // Реле 2 выкл (Клапан ГВС 7) на пине 4 digitalWrite(PinSSR3, HIGH); // Реле 3 выкл (Клапан ГВС 13) на пине 5 digitalWrite(PinSSR4, HIGH); // Реле 4 выкл (Насос ЦО обр.) на пине 6 digitalWrite(PinSSR5, HIGH); // Реле 5 выкл (Котел ЦО) на пине 7 digitalWrite(PinSSR6, HIGH); // Реле 6 выкл (Насос ГВС) на пине 8 } } String webPage() { String web; if (web == "/otoplenie1/") { TargetTemp1++; // Уваличить значение if ( TargetTemp1 > 1) // максимальное значение { TargetTemp1=1; // значение если было превышения максимального } EEPROM.write(0, TargetTemp1); // Запись нового значения в Флеш } if (web == "/otoplenie0/") { TargetTemp1--; // Уменшить значение if ( TargetTemp1 < 0) // минимальное значение { TargetTemp1=0; // значение, если было занижения значения ниже минимального } EEPROM.write(0, TargetTemp1); // Запись нового значения в Флеш } web += "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/> <meta charset=\"utf-8\"><title>Дом, милый дом</title><style>button{color:red;padding: 10px 27px;}</style></head>"; web += "<h1 style=\"text-align: center;font-family: Open sans;font-weight: 100;font-size: 20px;\">Дом, милый дом</h1>"; web += "<center><table border=1 cellpadding=5 cellspacing=1 style=width: 800px; border-collapse: collapse border: 1px solid black align: center>"; web += "<tbody>"; web += "<tr style=background-color: silver>"; web += "<td colspan=2 rowspan=1><center>Ситуация за окном</center></td>"; web += "<td colspan=4 rowspan=1><center>Отопление</center></td>"; web += "<td colspan=6 rowspan=1><center>Горячая вода</center></td>"; web += "</tr>"; web += "<tr>"; web += "<td rowspan=2><center>Темп-ра</center></td>"; web += "<td rowspan=2><center>Влаж.</center></td>"; web += "<td colspan=1 rowspan=2><center>Т1</center></td>"; web += "<td colspan=1 rowspan=2><center>Т2</center></td>"; web += "<td colspan=1 rowspan=2 style=text-align: center>"; web += "<center><p>Насос ОТ</p></center>"; web += "</td>"; web += "<td colspan=1 rowspan=2 style=text-align: center>"; web += "<center><p>Котел ОТ</p></center>"; web += "</td>"; web += "<td colspan=1 rowspan=2><center>Тбак</center></td>"; web += "<td colspan=1 rowspan=2><center>Т13</center></td>"; web += "<td colspan=1 rowspan=2 style=text-align: center>"; web += "<center><p>Насос ГВС</p></center>"; web += "</td>"; web += "<td colspan=1 rowspan=2 style=text-align: center>"; web += "<center><p>Котел ГВС</p></center>"; web += "</td>"; web += "<td colspan=2 rowspan=1><center>Клапаны</center></td>"; web += "</tr>"; web += "<tr>"; web += "<td><center>7</center></td>"; web += "<td><center>13</center></td>"; web += "</tr>"; web += "<tr>"; web += "<td colspan=1 rowspan=2 width: 50px><center>"; web += (ds.getTempC(TempNV)); web += "°C</center></td>"; web += "<td colspan=1 rowspan=2 width: 50px><center>%</center></td>"; web += "<td rowspan=2 width: 50px><center>"; // Датчик температуры Т1 web += (ds.getTempC(Temp1)); // Адрес датчика температуры Т1 (ПИН 9) (2 полоски) (28 FF 4E 70 84 16 5 2E) web += "°C</center></td>"; web += "<td rowspan=2 width: 50px><center>"; // Датчик температуры Т2 web += (ds.getTempC(Temp2)); // Адрес датчика температуры Т2 (ПИН 9) (1 полоска) (28 FF 6 3D 82 16 5 55) web += "°C</center></td>"; web += "<td rowspan=2 width: 50px><center>"; if ( digitalRead(PinSSR1) == LOW ) { // Реле (Насос ЦО обр.) web += "<font color=green><b>ВКЛ</b></font></center></td>"; } else { web += "<font color=red><b>ВЫКЛ</b></font></center></td>"; } web += "<td rowspan=2 width: 50px><center>"; if ( digitalRead(PinSSR5) == LOW ) { // Реле (Котел ЦО) web += "<font color=green><b>ВКЛ</b></font></center></td>"; } else { web += "<font color=red><b>ВЫКЛ</b></font></center></td>"; } web += "<td rowspan=2 width: 50px;><center>"; // Датчик температуры Тбак web += (ds.getTempC(Temp7)); // Адрес датчика температуры Тбак (ПИН 9) (3 полоски) (28 FF 8A 99 84 16 5 C9) web += "°C</center></td>"; web += "<td width: 50px;><center>"; // Датчик температуры Т13 web += (ds.getTempC(Temp13)); // Адрес датчика температуры Т13 (ПИН 9) (4 полоски) (28 FF DA 4 B5 16 3 88) web += "°C</center></td>"; web += "<td rowspan=2 width: 50px;><center>"; if ( digitalRead(PinSSR6) == LOW ) { // Реле (Насос ГВС) web += "<font color=green><b>ВКЛ</b></font></center></td>"; } else { web += "<font color=red><b>ВЫКЛ</b></font></center></td>"; } web += "<td rowspan=2 width: 50px;><center>"; if ( digitalRead(PinSSR4) == LOW ) { // Реле (Электрокотел ГВС) web += "<font color=green><b>ВКЛ</b></font></center></td>"; } else { web += "<font color=red><b>ВЫКЛ</b></font></center></td>"; } web += "<td rowspan=2 width: 50px;><center>"; if ( digitalRead(PinSSR3) == LOW ) { // Реле (Клапан ГВС 7) web += "<font color=green><b>ВКЛ</b></font></center></td>"; } else { web += "<font color=red><b>ВЫКЛ</b></font></center></td>"; } web += "<td rowspan=2 width: 50px;><center>"; if ( digitalRead(PinSSR2) == LOW ) { // Реле (Клапан ГВС 13) web += "<font color=green><b>ВКЛ</b></font></center></td>"; } else { web += "<font color=red><b>ВЫКЛ</b></font></center></td>"; } web += "</tr>"; web += "</tbody>"; web += "</table>"; web += "</center>"; web += "<br><br><center><table border=1 cellpadding=5 cellspacing=1 style=width: 800px; border-collapse: collapse border: 1px solid black align: center>"; web += "<tbody>"; web += "<tr>"; web += "<td colspan=6><center>Управление</center></td>"; web += "</tr>"; web += "<tr>"; web += "<td><center>tн.в.</center></td>"; web += "<td><center>Т2</center></td>"; web += "<td><center>Т13</center></td>"; web += "<td><center>Отопление</center></td>"; web += "<td><center>Горячая вода</center></td>"; web += "<td><center>Поддержка</center></td>"; web += "</tr>"; web += "<tr>"; web += "<td><center>"; web += (TargetTemp1); // Вывод инф из ячейки с "пределом" темп-ры (Тн.в.) web += "°C</center></td>"; web += "<td><center>"; web += (TargetTemp2); // Вывод инф из ячейки с "пределом" темп-ры (Т2) web += "°C</center></td>"; web += "<td><center>"; web += (TargetTemp3); // Вывод инф из ячейки с "пределом" темп-ры (Т13) web += "°C</center></td>"; if ( Otoplenie == 1 ) { web += "<td><center><font color=green><b>Работает</b></font></center></td>"; } // Отопление включено else { web += "<td><center><font color=red><b>Отключено</b></font></center></td>"; } // Отопление отключено if ( GVS == 1 ) { web += "<td><center><font color=green><b>Работает</b></font></center></td>"; } // ГВС включено else { web += "<td><center><font color=red><b>Отключено</b></font></center></td>"; } // ГВС отключено if ( Mode == 1 ) { web += "<td><center><font color=green><b>Работает</b></font></center></td>"; } // Режим поддержания отопления включен else { web += "<td><center><font color=red><b>Отключено</b></font></center></td>"; } // Режим поддержания отопления выключен web += "</tr>"; web += "<tr>"; web += "<td><center><form><input type=text name=ttemp1 size=4> <input type=submit value=ОК> </form></center></td>"; // Кнопка ОК (Тн.в.) web += "<td><center><form><input type=text name=ttemp2 size=4> <input type=submit value=ОК> </form></center></td>"; // Кнопка ОК (Т2); web += "<td><center><form><input type=text name=ttemp3 size=4> <input type=submit value=ОК> </form></center></td>"; // Кнопка ОК (Т13) if ( Otoplenie == 1 ) { web += "<td><center><form action=/otoplenie0/>"; web += "<button type=submit><font color=red><b>ОТКЛ</font></b></button>"; web += "</form></td>"; } // Кнопка Выкл (Отопление) else { web += "<td><center><form action=/otoplenie1/>"; web += "<button type=submit><font color=green><b>ВКЛ</font></b></button>"; web += "</form></td>"; } // Кнопка Вкл (Отопление) if ( GVS == 1 ) { web += "<td><center><form action=/gvs0/>"; web += "<button type=submit><font color=red><b>ОТКЛ</font></b></button>"; web += "</form></td>"; } // Кнопка Выкл (ГВС) else { web += "<td><center><form action=/gvs1/>"; web += "<button type=submit><font color=green><b>ВКЛ</font></b></button>"; web += "</form></td>"; } // Кнопка Вкл (ГВС) if ( Mode == 1 ) { web += "<td><center><form action=/mode0/>"; web += "<button type=submit><font color=red><b>ОТКЛ</font></b></button>"; web += "</form></td>"; } // Кнопка Выкл (Режим поддержания) else { web += "<td><center><form action=/mode1/>"; web += "<button type=submit><font color=green><b>ВКЛ</font></b></button>"; web += "</form></td>"; } // Кнопка Вкл (Режим поддержания) web += "</tr>"; web += "</tbody>"; web += "</table>"; web += "</center>"; return(web); }Так же выкладываю ссылку на внешний вид страницы управления.
http://upload.akusherstvo.ru/images/1309057.png
Я по образованию теплотехник, а не программист, по этому всё так туго идёт)