Ошибка компиляции "ISO C++ forbids comparison between pointer and integer [-fpermissive]"

ergeykl
Offline
Зарегистрирован: 20.04.2017

Всем добра!

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   
          } 

 

dimin21590
dimin21590 аватар
Offline
Зарегистрирован: 26.10.2016

А можно скриншот с ошибкой?

ergeykl
Offline
Зарегистрирован: 20.04.2017

Скриншот с ошибкой

http://upload.akusherstvo.ru/images/1309038.png

ergeykl
Offline
Зарегистрирован: 20.04.2017
wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Уважаемый ТС (Топик стартер)...

можно вас попросить перевести на понятный вам язык фразу "Temp2 was not declared in this scope"?

И хочется узнать, какие действия вы планируете в связи с этой диагностикой?

(...ушел материться в сад...)

 

ergeykl
Offline
Зарегистрирован: 20.04.2017

Прошу прощения за свою неграмотность. Сказать что я новичок - это значит преувеличить)

Всё вроди как получилось, но проверить не могу т.к. условие будет выполняться тогда, когда в ячейке еепрома будет о или 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 += "&deg;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 += "&deg;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 += "&deg;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 += "&deg;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 += "&deg;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 += "&deg;C</center></td>";
    
  web += "<td><center>";
  web += (TargetTemp2);           // Вывод инф из ячейки с "пределом" темп-ры (Т2)
  web += "&deg;C</center></td>";
  
  web += "<td><center>";
  web += (TargetTemp3);           // Вывод инф из ячейки с "пределом" темп-ры (Т13)
  web += "&deg;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);
}

 

ergeykl
Offline
Зарегистрирован: 20.04.2017

Так же выкладываю ссылку на внешний вид страницы управления.

http://upload.akusherstvo.ru/images/1309057.png

Я по образованию теплотехник, а  не программист, по этому всё так туго идёт)