Автозапуск, нужна помощь

Whynot.
Offline
Зарегистрирован: 19.11.2015

Ардуино нано+ ГСМ м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);
      }
      }
}
}

 

ptr
Offline
Зарегистрирован: 28.05.2016

После 43-й строки добавьте

val = "";