Управление Реле через СМС модуль 800L V.2
- Войдите на сайт для отправки комментариев
Чт, 09/07/2020 - 17:59
Добрый день, подскажите пожалуйста новичку. Делаю тестовый стенд по управлению реле через смс. Код работает но как результат вместо 1 смс о выполненном действии, отправляет смс до бесконечности, подскажите что не так в коде. Спасибо.
#include <SoftwareSerial.h>
#define PIN_RELAY 5
SoftwareSerial mySerial(4, 3);
char incomingByte;
String inputString;
void setup() {
pinMode(PIN_RELAY, OUTPUT);
digitalWrite(PIN_RELAY, HIGH);
Serial.begin(9600);
mySerial.begin(9600);
while(!mySerial.available()){
mySerial.println("AT");
delay(1000);
Serial.println("Connecting…");
}
Serial.println("Connected!");
mySerial.println("AT+CMGF=1");
delay(1000);
mySerial.println("AT+CNMI=1,2,0,0,0");
delay(1000);
mySerial.println("AT+CMGL=\"REC UNREAD\"");
}
void loop()
{
if(mySerial.available())
{
delay(100);
while(mySerial.available())
{
incomingByte = mySerial.read();
inputString += incomingByte;
}
delay(10);
Serial.println(inputString);
inputString.toUpperCase();
if (inputString.indexOf("ON") > -1)
{
digitalWrite(PIN_RELAY, LOW);
sms(String("Heater - ON"), String("+79650474047"));
}
if (inputString.indexOf("OFF") > -1)
{
digitalWrite(PIN_RELAY, HIGH);
sms(String("Heater - OFF"), String("+79650474047"));
}
delay(50);
if (inputString.indexOf("OK") == -1)
{
mySerial.println("AT+CMGDA=\"DEL ALL\"");
delay(1000);
}
inputString = "";
}
}
void sms(String text, String phone)
{
Serial.println("SMS send started");
mySerial.println("AT+CMGS=\"" + phone + "\"");
delay(500);
mySerial.print(text);
delay(500);
mySerial.print((char)26);
delay(500);
Serial.println("SMS send complete");
delay(2000);
}
добавить некую переменную, при старте присваивать ей = 0, при отправке проверять не равна ли она =1, после отправки присвоить единичку.
При старте присваивать в setup или loop ?
Setup выполняется один раз при включении
Теперь все работает, но дублируются сообщения в мониторе порта и ответная смс приходит только через 1 мин, а раньше сразу приходила