Непонятная мне ошибка

Егор Торкевич
Offline
Зарегистрирован: 15.06.2022
#include <MQ2.h>
#include <SoftwareSerial.h>
#define DEBUG true
SoftwareSerial esp8266(9,10); // This makes pin 9 of Arduino as RX pin and pin 10 of Arduino as the TX pin
const int sensorPin= 0;
int air_quality;
#include <LiquidCrystal.h> 
LiquidCrystal lcd(12,11, 5, 4, 3, 2);
void setup() {
pinMode(8, OUTPUT);
lcd.begin(16,2);
lcd.setCursor (0,0);
lcd.print ("circuitdigest ");
lcd.setCursor (0,1);
lcd.print ("Sensor Warming ");
delay(1000);
Serial.begin(115200);
esp8266.begin(115200); // your esp's baud rate might be different
  sendData("AT+RST\r\n",2000,DEBUG); // reset module
  sendData("AT+CWMODE=2\r\n",1000,DEBUG); // configure as access point
  sendData("AT+CIFSR\r\n",1000,DEBUG); // get ip address
  sendData("AT+CIPMUair_quality=1\r\n",1000,DEBUG); // configure for multiple connections
  sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG); // turn on server on port 80
pinMode(sensorPin, INPUT);        //Gas sensor will be an input to the arduino
lcd.clear();
}
void loop() {
MQ2 gasSensor = MQ2(A0);
float air_quality = gasSensor.getPPM();
if(esp8266.available()) // check if the esp is sending a message 
  {
    if(esp8266.find("+IPD,"))
    {
     delay(1000);
     int connectionId = esp8266.read()-48; /* We are subtracting 48 from the output because the read() function returns the ASCII decimal value and the first decimal number which is 0 starts at 48*/ 
     String webpage = "<h1>IOT Air Pollution Monitoring System</h1>";
       webpage += "<p><h2>";   
       webpage+= " Air Quality is ";
       webpage+= air_quality;
       webpage+=" PPM";
       webpage += "<p>";
     if (air_quality<=1000)
{
  webpage+= "Fresh Air";
}
else if(air_quality<=2000 && air_quality>=1000)
{
  webpage+= "Poor Air";
}
else if (air_quality>=2000 )
{
webpage+= "Danger! Move to Fresh Air";
}
webpage += "</h2></p></body>"; 
     String cipSend = "AT+CIPSEND=";
     cipSend += connectionId;
     cipSend += ",";
     cipSend +=webpage.length();
     cipSend +="\r\n";
     
     sendData(cipSend,1000,DEBUG);
     sendData(webpage,1000,DEBUG);
     
     cipSend = "AT+CIPSEND=";
     cipSend += connectionId;
     cipSend += ",";
     cipSend +=webpage.length();
     cipSend +="\r\n";
     
     String closeCommand = "AT+CIPCLOSE="; 
     closeCommand+=connectionId; // append connection id
     closeCommand+="\r\n";
     
     sendData(closeCommand,3000,DEBUG);
    }
  }
lcd.setCursor (0, 0);
lcd.print ("Air Quality is ");
lcd.print (air_quality);
lcd.print (" PPM ");
lcd.setCursor (0,1);
if (air_quality<=1000)
{
lcd.print("Fresh Air");
digitalWrite(8, LOW);
}
else if( air_quality>=1000 && air_quality<=2000 )
{
lcd.print("Poor Air, Open Windows");
digitalWrite(8, HIGH );
}
else if (air_quality>=2000 )
{
lcd.print("Danger! Move to Fresh Air");
digitalWrite(8, HIGH);   // turn the LED on
}
lcd.scrollDisplayLeft();
delay(1000);
}
String sendData(String command, const int timeout, boolean debug)
{
    String response = ""; 
    esp8266.print(command); // send the read character to the esp8266
    long int time = millis();
    while( (time+timeout) > millis())
    {
      while(esp8266.available())
      {
        // The esp has data so display its output to the serial window 
        char c = esp8266.read(); // read the next character.
        response+=c;
      }  
    }
    if(debug)
    {
      Serial.print(response);
    }
    return response;
}
 
Ошибка:
C:\Users\eofit\AppData\Local\Temp\arduino_modified_sketch_656917\sketch_jun15b.ino: In function 'void loop()':
C:\Users\eofit\AppData\Local\Temp\arduino_modified_sketch_656917\sketch_jun15b.ino:32:28: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
     if(esp8266.find("+IPD,"))
 
DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

это не ошибка

ISO C++ forbids converting a string constant to 'char*'

а предупреждение канпилятора, что ты пхаешь в функцию не то что думаешь и не то что она хочет

функция видимо хочет char * как параметр, а ты пхаешь ей const char *

b707
Offline
Зарегистрирован: 26.05.2017

английский плохо понимаете?

Функция ожидает своим параметром ссылку на символьный массив, а вы ей константу подсовываете

Это не считая кучи других ляпов и логических неувязок в коде

Егор Торкевич
Offline
Зарегистрирован: 15.06.2022

я бубун. какой символьный массив и где он его просит?

 

Егор Торкевич
Offline
Зарегистрирован: 15.06.2022

у меня нет const char*

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

  if(esp8266.find("+IPD,"))

Егор Торкевич
Offline
Зарегистрирован: 15.06.2022

это файфай адаптер или как эта херь зовется

Morroc
Offline
Зарегистрирован: 24.10.2016

нет, "+IPD," - это const char* )

Егор Торкевич
Offline
Зарегистрирован: 15.06.2022

а на что его поменять что бы предупреждения не было

 

b707
Offline
Зарегистрирован: 26.05.2017

Егор Торкевич пишет:

а на что его поменять что бы предупреждения не было

да забей на предупреждение... в этом коде ляпов кроме него навалом...

Какая ардуина?

Егор Торкевич
Offline
Зарегистрирован: 15.06.2022

uno

 

Егор Торкевич
Offline
Зарегистрирован: 15.06.2022

как говорится код рабоает - значит там нет ляпов)

 

Morroc
Offline
Зарегистрирован: 24.10.2016

радикальненько ) 

Bronevoy
Offline
Зарегистрирован: 16.06.2022

Помогите пожалуйста, вот такая ситуация. не могу писать код. что делать?

 

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Bronevoy пишет:
Помогите пожалуйста, вот такая ситуация. не могу писать код. что делать?

ничего. система искусственного интеллекта запретила тебе это делать. смирись.

Bronevoy
Offline
Зарегистрирован: 16.06.2022

ахаха, спасибо.

мне уже помогли