Условия с GSM-модулем SIM900 не выполняются
Я выполняю этот код для управления светодиодом с помощью сообщения GSM SIM900, но есть две проблемы. Во-первых, он иногда получает сообщения, а иногда нет. Во-вторых, он не выполняет условия if
, которые присутствуют в сообщении GSM при его получении.
Возникла ли проблема с моим GSM-модулем? Кто-нибудь может помочь?
#include <SoftwareSerial.h>
SoftwareSerial gsm(9,10);
String msg;
const int LED = 13;
void setup() {
gsm.begin(9600);
Serial.begin(9600);
Serial.println("PUMP CONTROL");
Serial.println("t : to receive text");
delay(1000);
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
}
void loop() {
if (Serial.available()>0)
switch(Serial.read())
{
case 't':
showSMS();
break;
}
while(gsm.available() > 0)
{
Serial.write(gsm.read());
}
if ( msg == "ON")
{
Serial.println("ON");
digitalWrite(LED, HIGH);
Serial.println("ON1");
delay(1000);
} else if (msg == "OFF")
{
digitalWrite(LED, LOW);
delay(1000);
}
if(msg != "") msg = "";
}
void showSMS()
{
gsm.print("AT+CMGF=1\r");
gsm.print("AT+CNMI=2,2,0,0,0\r");
delay(1000);
msg = "";
while(gsm.available() > 0)
{
msg += gsm.read();
}
Serial.println(msg);
}
1 ответ
Лучший ответ:
▲ 1
Я решил проблемы с условиями, создав условие с помощью ASCII-кода ON и OFF.
Я заменил:
if ( msg == “ON”)
с
if(msg.indexOf("ON")>=0)
и заменено:
else if (msg == "OFF")
с
if(msg.indexOf("OFF")>=0)
,
@Mahmoud Mohammed
Смотрите также:
- Проблема с получением SMS - GSM-модуль Arduino Uno и SIM900A
- Мини-модем SIM900a, IMEI 0, помощь с контактами TX RX
- Как получить данные из базы данных моего сервера в переменную в моем Arduino?
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- SIM800L не регистрируется в сети
- Как проверить, работает ли GSM-модуль?
- Как отправлять сообщения на несколько номеров с помощью модуля Arduino uno и SIM800?
- Клиент MQTT на Arduino + SIM900
Есть несколько основных команд, которые следует выполнить перед проверкой сообщений. Нажмите **AT\r\n** и проверьте статус сети, доступен или нет, и есть еще кое-что., @Vaibhav