Автозапуск, нужна помощь
- Войдите на сайт для отправки комментариев
Чт, 03/11/2016 - 13:10
Ардуино нано+ ГСМ м590 + 2х канальное реле.
Звоню, отбивает звонок и начинает очень много раз выполнять цикл по щелканию реле, в конечном итоге НА N-й раз остановится, но при повторном звонке больше не выполняет цикл, пока не передернешь ардкино.
Прошу у вас помощи - как исправить код чтобы после звонка цикл щелкания реле выполнялся 1 раз, и чтоб без ресета ардуино можно было при звонке еще раз выполнить цикл и так каждый раз.
Заранее благодарю.
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX GSM M590
int ch = 0;
int button1 = 11;
int button3 = 12;
String val = "";
void setup() {
delay(2000); //время на инициализацию модуля
pinMode(button1, OUTPUT);
pinMode(button3, OUTPUT);
digitalWrite(button1, HIGH);
digitalWrite(button3, HIGH);
Serial.begin(9600); //скорость порта
mySerial.begin(9600);
mySerial.println("AT+CLIP=1"); //включаем АОН
delay(100);
mySerial.println("AT+CMGF=1"); //режим кодировки СМС - обычный (для англ.)
delay(100);
mySerial.println("AT+CSCS=\"GSM\""); //режим кодировки текста
delay(100);
}
void loop() {
if (mySerial.available()) { //если GSM модуль что-то послал нам, то
while (mySerial.available()) { //сохраняем входную строку в переменную val
ch = mySerial.read();
val += char(ch);
delay(10);
}
if (val.indexOf("RING") > -1) { //если звонок обнаружен, то проверяем номер
if (val.indexOf("79153303444") > -1) { //если номер звонящего наш. Укажите свой номер без "+"
mySerial.println("ATH0"); //разрываем связь
digitalWrite(button1, LOW); //включаем светодиод на 3 сек
delay(1000);
digitalWrite(button1, HIGH); //выключаем реле
delay(100);
digitalWrite(button3, LOW);
delay(500);
digitalWrite(button3, HIGH);
}
}
}
}
После 43-й строки добавьте
val ="";