Автозапуск, нужна помощь
- Войдите на сайт для отправки комментариев
Чт, 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 =
""
;