SIM 800L и управление светодиодом на плате Arduino UNO

remontmob
Offline
Зарегистрирован: 27.01.2018

Здравсвуйте! Прошу помощи. Я только начинаю прогаммировать, с AT-командами от платы к модулю разобрался. теперь пытаюсь разобраться с исполнением команд от GSM-модуля.

Пришу скетч, пытаюсь сделать так, чтобы при зовнке светодиод на выводе 13 загорался. Что я делаю не так, помогите! Заранее спасибо 

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
void setup() {
  Serial.begin(19200);  //Скорость порта для связи Arduino с компьютером
  Serial.println("Hello! Software by remontmob. V 1.0 remontmob@mail.ru");
  mySerial.begin(19200);  //Скорость порта для связи Arduino с GSM модулем
  delay (3000);
  mySerial.println("ATI"); // вываливаем всю инфу
  mySerial.println("ATS0=1");// настраиваем автоответ
  pinMode (13, OUTPUT);


}
void loop()
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());


  if (mySerial.write(Serial.read()== "RING" ) // вот тут  буксую. 
  {
    digitalWrite (13, HIGH);
  }


  else {
    digitalWrite (13, LOW);
  }





}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Почитайте вот здесь, чем отличаются символьные константы от строковых. Затем посмотрите на свою строку 22. Если останутся вопросы и непоятки, переходите к началалу - почитайте вот здесь, чем .....

ven-til
Offline
Зарегистрирован: 13.02.2018

И закрывающую скобку в той же строке.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А, так "буксует" он скорее всего из-за скобки, а выложить сообщение компилятора религия не позволила. Ну, тогда пусть буксует дальше.

remontmob
Offline
Зарегистрирован: 27.01.2018

все, исправил. теперь компилятор не ругается, но прога не работает. Если я верно понимаю, то нужно считать из монитора порта "RING' и включить светодиод. Или напрямую не получится?

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
void setup() {
  Serial.begin(19200);  //Скорость порта для связи Arduino с компьютером
  Serial.println("Hello! Software by remontmob. V 1.0 remontmob@mail.ru");
  mySerial.begin(19200);  //Скорость порта для связи Arduino с GSM модулем
  delay (3000);
  mySerial.println("ATI"); // вываливаем всю инфу
  mySerial.println("ATS0=1");// настраиваем автоответ
  pinMode (13, OUTPUT);


}
void loop()
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());


  if (Serial.read() == "RING" )  /// Тут вопросы
  {
    digitalWrite (13, HIGH);
  }


  else {
    digitalWrite (13, LOW);
  }

}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

remontmob пишет:

все, исправил. 

Ни хрена не исправил.

Читайте мой пост #1 и делайте то, что там сказано!

remontmob
Offline
Зарегистрирован: 27.01.2018

начинаю понимать. 

 

 if (Serial.read() == "RING" )  ошибка тут.

Serial.read() не понимает  буквы. ему нужны цифры. Значит, надо  объяявить переменную и приравнять 'ring' к цифре. верно?

 

тут что-то связано с char

sadman41
Offline
Зарегистрирован: 19.10.2016

Вам бы сценарии к арт-хаусным фильмам писать..

b707
Offline
Зарегистрирован: 26.05.2017

remontmob пишет:

 if (Serial.read() == "RING" )  ошибка тут.

Serial.read() не понимает  буквы. ему нужны цифры. Значит, надо  объяявить переменную и приравнять 'ring' к цифре. верно?

невозможно приравнять 'ring' к цифре. Это как приравнять одного слона к стаду носорогов.

Самая первая ошибка в том, что функция Serial.read() считывает из порта за раз только одно число или одну букву. А в слове "RING" четыре буквы. Соответсвенно, условие (Serial.read() == "RING" ) ни при каких условиях не может выполнится.

Вам необходимо считывать буквы из порта, складывать их в слова и искать среди этих слов "RING"

remontmob
Offline
Зарегистрирован: 27.01.2018

 if (Serial.read() == "R" )

 if (Serial.read() == "I" ) 
if (Serial.read() == "N" ) 
if (Serial.read() == "G" )
 
так?
ven-til
Offline
Зарегистрирован: 13.02.2018

И в цикл ещё это запихнуть ) Или напевать под мотив Буратино - Эр   ту-ту-ту-ту-ту   И ту-ту-ту-ту-ту  Эн  ту-ту-ту-ту-ту Гэ  ту-ту-ту-ту-ту
Эр И Эн ГЭ

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

remontmob пишет:

Serial.read() не понимает  буквы. ему нужны цифры. Значит, надо  объяявить переменную и приравнять 'ring' к цифре. верно?

 if (Serial.read() == "R" )
if (Serial.read() == "I" )
if (Serial.read() == "N" )
if (Serial.read() == "G" )

Вы знаете, Евгений Александрович Евтушенко со мною не знаком, и врядли догадывается о моём существовании, но в своей "балладе о ласточке", он писал именно обо мне в данную минуту: "... и свои чувства матом выражал ..."

Я Вам уже сказал что делать в посте №1 - изучите чем отличаются символьный тип и строкового, я Вам дал ссылку, там об этом ПРЯМО написано. Там ПРЯМО написано в чём Ваша ошибка. Так, изучите же!!!! Оторвите ленивую задницу и прочитайте тест столько раз, сколько нужно, чтобы понять!  Перестаньте строить из себя дебила, не сопосбного прочитать две страницы - это уже не смешно!

remontmob
Offline
Зарегистрирован: 27.01.2018

я прочитал, но не могу понять, как эти абстрактые числа  помогут мне решить мою задачу?

 

я так понимаю, что мне нужно изучать "

Строковые константы

 

из статьи?

 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Мля, я я уже не могу. Ну, во-первых, неплохо бы и всю статью целиком, но даже если в лом, вот скажите с какого хрена Вы читаете только про строковые? Я же Вам по-русски написал: "изучить чем отличаются символьные константы от строковых". Какое слово Вам в этой фразе непонятно? Там в статье есть и про те, и про другие!

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Вообще-то код который мы пишем это сплошная абстракция, которую компилятор превращает в реальный код. Так что абстрактные числа, абстрактные программы . И нечего здесь нос воротить.

И главное ложки нет.https://www.youtube.com/watch?v=8EAD7CUu_F8  

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

remontmob пишет:

я прочитал, но не могу понять, как эти абстрактые числа  помогут мне решить мою задачу?

Значит, Ардуино не для Вас.

Займитесь чем-нибудь другим. Например, макраме.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

remontmob пишет:

Serial.read() не понимает  буквы. ему нужны цифры.

перенес в http://arduino.ru/forum/otvlechennye-temy/narochno-ne-pridumaesh-origina...

Клапауций 400
Offline
Зарегистрирован: 28.02.2018

qwone пишет:

Вообще-то код который мы пишем это сплошная абстракция, которую компилятор превращает в реальный код. Так что абстрактные числа, абстрактные программы . И нечего здесь нос воротить.

О_О

Похожее изображение