Включение двух реле от Смс
- Войдите на сайт для отправки комментариев
Пт, 13/09/2019 - 14:28
Всем привет. Прошу помощи с проектом. Основа взята с просторов. Код компилируется, но работать не хочет. Использую nano +sim800l.Прошу подсказать почему.
#include "SIM900.h" //библиотека для работы с gsm модулем #include <SoftwareSerial.h> #include "sms.h" SMSGSM sms; //2 и 3 Rx Tx int flag=0; boolean started=false; char smsbuffer[160]; char n[20];// переменная с номером char n1[]="+7**********"; String input_string = ""; String smsContent = ""; char smsDv[] ="Komanda Vipolnena!";//массив с текстом ответной смс char pos;//переменная с номером последней смс char sendsms[160];//переменная с текстом смс void setup() { pinMode(7, OUTPUT); digitalWrite(7,HIGH); pinMode(8, OUTPUT); digitalWrite(8,HIGH); Serial.begin(9600); if (gsm.begin(4800)) { Serial.println("\nstatus=READY"); started=true; } else Serial.println("\nstatus=IDLE"); } void loop() { pos = sms.IsSMSPresent(SMS_UNREAD); // присваиваем переменной номер последней смс if (pos) { // если есть не принятые смс, то getsms(); // получаем эту смс if(strstr(n, n1) != NULL){ if (input_string=="ON_1"){Serial.print("YES!"); //n1.toCharArray(n,20); sms.SendSMS(n, smsDv);//отправка ответа на номер из переменной n с содержанием массива smsDv sms.DeleteSMS(1); memset(n,0,20); //очистка переменной n с номером input_string=""; char smsbuffer[160]="";//очистка массива с текстом digitalWrite(7,LOW);// нажатие кнопки, подаём низкий уровень сигнала на 7 пин delay(1000);//удержание кнопки, пауза digitalWrite(7,HIGH);//отпускание кнопки, подаём высокий уровень сигнала на 7 пин } else if (input_string=="OFF_1"){Serial.print("YES!"); //n1.toCharArray(n,20); sms.SendSMS(n, smsDv);//отправка ответа на номер из переменной n с содержанием массива smsDv sms.DeleteSMS(1); memset(n,0,20); input_string=""; char smsbuffer[160]=""; digitalWrite(8,LOW); delay(1000); digitalWrite(8,HIGH); } } sms.DeleteSMS(pos); // удаляем СМС из сим-карты } } void getsms()//функция получения непрочитанной смс { sms.GetSMS(pos,n,20,smsbuffer,160);//получаем, присваиваем номер, input_string =String(smsbuffer);// в переменную переносится содержимое массива smsbuffer }пишите конкретнее - как нужно, чтобы работало , как оно реально работает - и чем конкретно первое отличается от второго.
Код заливается в контроллер?
Если "нет", выясняйте, что ему мешает, в частности, установлен ли драйвер.
Если "да", значит, код работает. Работает так, как написан. Возможно, не так, как Вам бы хотелось, ну так откуда мы можем узнать, чего Вам хочется?
Извиняюсь. Дополняю. После загрузки, реле срабатывают, после отправки смс команд ничего не происходит, через какое то время загорается после пары раз миганий диод tx. И всё. Никакой реакции больше.
Должен сработать как по коду на команду on_1 включить на время первое реле, второй командой второе