Непонятная мне ошибка
- Войдите на сайт для отправки комментариев
Ср, 15/06/2022 - 10:15
#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,"))
это не ошибка
ISO C++ forbids converting a string constant to 'char*'
а предупреждение канпилятора, что ты пхаешь в функцию не то что думаешь и не то что она хочет
функция видимо хочет char * как параметр, а ты пхаешь ей const char *
английский плохо понимаете?
Функция ожидает своим параметром ссылку на символьный массив, а вы ей константу подсовываете
Это не считая кучи других ляпов и логических неувязок в коде
я бубун. какой символьный массив и где он его просит?
у меня нет const char*
if(esp8266.find("+IPD,"))
это файфай адаптер или как эта херь зовется
нет, "+IPD," - это const char* )
а на что его поменять что бы предупреждения не было
а на что его поменять что бы предупреждения не было
да забей на предупреждение... в этом коде ляпов кроме него навалом...
Какая ардуина?
uno
как говорится код рабоает - значит там нет ляпов)
радикальненько )
Помогите пожалуйста, вот такая ситуация. не могу писать код. что делать?
ничего. система искусственного интеллекта запретила тебе это делать. смирись.
ахаха, спасибо.
мне уже помогли