Аналоговый пин

vlad257
Offline
Зарегистрирован: 31.05.2020

Привет всем.
Возникла неожиданная проблема.

int AR = analogRead(0);

Эта строка не позволяет выполнять функцию, котороя стоит после нее. 



sendSMS("___________", "Privet");
......................
 

Как бы странно не звучало после считывания информации с аналогового пина, даже если к нему ничего не подключено. Мешает выполняться именно этой функции SMS. Остальные работает нормально кроме нее.
 Но она рабочая. То есть как только я коментирую строку int AR = analogRead(0); Смс работает. В коде после этой строки стоит if, который даже не выполняется. Вот сама функция sms.

void sendSMS(String phone, String message)
{
  SIM800.begin(9600);
   sendATCommand("AT", true);                   
  _response = sendATCommand("AT+CMGF=1;&W", true);
  sendATCommand("AT+CMGS=\"" + phone + "\"", true);       
  sendATCommand(message + "\r\n" + (String)((char)26), true);   
 SIM800.end(); 
}

String sendATCommand(String cmd, bool waiting) {
  String _resp = "";                           
  Serial.println(cmd);                         
  SIM800.println(cmd);                       
  if (waiting) {                               
    _resp = waitResponse();             
   Serial.println(_resp);                   
  }
  return _resp;                               
}

String waitResponse() {                       
  String _resp = "";                           
  long _timeout = millis() + 10000;           
  while (!SIM800.available() && millis() < _timeout)  {};
  if (SIM800.available()) {                     
    _resp = SIM800.readString();           
  }
  else {                                       
        Serial.println("Timeout...");           
  }
  return _resp;                                 
}

Спасибо.
 

 

Komandir
Offline
Зарегистрирован: 18.08.2018

А что аналогового вы хотите найти на пине 0 ???

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Приведите минимально возможный скетч который демонстрирует проблему, но который можно скомпилировать. По тем кускам что вы запостили ничего особо не понятно.

Green
Offline
Зарегистрирован: 01.10.2015

Komandir пишет:

А что аналогового вы хотите найти на пине 0 ???

analogRead(0) == analogRead(A0) == analogRead(14)

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

Green пишет:

analogRead(0) == analogRead(A0) == analogRead(14)

сравниваете? :)

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

vlad257 - память?

Green
Offline
Зарегистрирован: 01.10.2015

b707 пишет:

сравниваете? :)


Намекаю.)

vlad257
Offline
Зарегистрирован: 31.05.2020

 

 

Думаю этого будет достаточно

функцию key_pad не добавляю поскольку, if даже не выполняеться.

Мешает конкретно зчитывание с аналогово пина.

analogRead(0) значит analogRead(A0)

Я менял на другие пины. но ничего. 

конретно мешает.

int BV = analogRead(0); //button check

VR myVR(2,3); - распознавание голоса. Но оно идет позже. Если есть вопросы - отвечу сразу. Спасибо.

#include <OneWire.h>
#include <SoftwareSerial.h>
#include "VoiceRecognitionV3.h"
#include <DFPlayer_Mini_Mp3.h>
SoftwareSerial SIM800(5, 6);
VR myVR(2,3); // voice recognition

uint8_t records[7]; // save record
uint8_t buf[64];

int ledyellow = 11;
int ledblue = 8;
int ledred = 9;

int pirmove = 10; //sensormove

int z = 0;
int m = 0;

char pass[4] = {'1', '2', '3', '4'}; //keypad
char buttons[4]={'0', '0', '0', '0'};
int k=0;
int b=0;

#define on (0) //voice comand
#define off (1)
#define tm (2)

int ret;

int p; //temperature
OneWire ds(13);

String _response = "";

void setup()
{

myVR.begin(9600);
Serial.begin (9600);

pinMode(ledblue, OUTPUT);
pinMode(ledred, OUTPUT);
pinMode(ledyellow, OUTPUT);

pinMode(pirmove, INPUT); //move


mp3_set_serial (Serial); // mp3
delay(100);
mp3_set_volume(15);

}

void loop()
{

int z=0;
c:
digitalWrite(ledred, LOW);
digitalWrite(ledyellow, LOW);



int BV = analogRead(0); //button check
if (BV>10){
key_pad();
}



int pirvalue = digitalRead(pirmove);
if(pirvalue == HIGH || z >= 2) { //1:if 1 time move
digitalWrite(ledblue, LOW);
delay(1000);
z=z+1;

if(pirvalue == HIGH || z >= 2){ //2: if 2 times move
digitalWrite(ledred, HIGH);

myVR.end();
sendSMS("+____", "Secutiry active");
myVR.begin(9600);


mp3_play (4); // remove protection
delay(1200);
//send sms about move
do {

mp3_play (5); //buzzer
delay(1000);


int BV = analogRead(0); //button ckeck
if (BV>50){
key_pad();
}



}
while (m<100);

}

else { //2:
goto c;
}
}
else if (pirvalue == LOW) { //1:
digitalWrite(ledblue, HIGH);
delay(2000);
z = 0;

int BV = analogRead(1);
if(BV>50){
key_pad();
z=2;
}
goto c;
}
}

void sendSMS(String phone, String message)
{

SIM800.begin(9600);

sendATCommand("AT", true); // Отправили AT для настройки скорости обмена данными
_response = sendATCommand("AT+CMGF=1;&W", true); // Включаем текстовый режима SMS (Text mode) и сразу сохраняем значение (AT&W)!
sendATCommand("AT+CMGS=\"" + phone + "\"", true); // Переходим в режим ввода текстового сообщения
sendATCommand(message + "\r\n" + (String)((char)26), true); // После текста отправляем перенос строки и Ctrl+Z
SIM800.end();



}

String sendATCommand(String cmd, bool waiting) {


String _resp = ""; // Переменная для хранения результата
Serial.println(cmd); // Дублируем команду в монитор порта
SIM800.println(cmd); // Отправляем команду модулю
if (waiting) { // Если необходимо дождаться ответа...
_resp = waitResponse(); // ... ждем, когда будет передан ответ
Serial.println(_resp); // Дублируем ответ в монитор порта
}
return _resp; // Возвращаем результат. Пусто, если проблема

}

String waitResponse() { // Функция ожидания ответа и возврата полученного результата

String _resp = ""; // Переменная для хранения результата
long _timeout = millis() + 10000; // Переменная для отслеживания таймаута (10 секунд)
while (!SIM800.available() && millis() < _timeout) {}; // Ждем ответа 10 секунд, если пришел ответ или наступил таймаут, то...
if (SIM800.available()) { // Если есть, что считывать...
_resp = SIM800.readString(); // ... считываем и запоминаем
}
else { // Если пришел таймаут, то...
Serial.println("Timeout..."); // ... оповещаем об этом и...
}
return _resp; // ... возвращаем результат. Пусто, если проблема

}

 

 

 

 

 

 

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

vlad257 пишет:

Думаю этого будет достаточно

И совершенно напрасно так думаете. Если бы Вы знали, чего достаточно, а чего - нет, Вы бы сами всё сделали и этого поста бы не было.

Вам ведь ясно написали:

asam пишет:

Приведите минимально возможный скетч который демонстрирует проблему, но который можно скомпилировать

То, что Вы выложили - не компилируется. Я не могу запустить его и увидеть проблему. Что мне делать? Дополнять своими функциями-заглушками? Или не запуская сидеть и исследовать? А не слишком ли много суеты и усилий для решения чужой проблемы?

Если Вам реально нужна быстрая помощь, то не поленитесь сделать следующее:

1. Подготовит минимальный скетч, который компилируется, работает и демонстрирует проблему. Минимальный - это значит выбросьте всё, что можно выбросить так, чтобы проблема сохранялась - всё! Чем скетч будет меньше, тем лучше, тем больше вероятность, что кто-то не поленится в нём разбираться.

2. Выложите этот скетч сюда и толково объясните как воспроизвести проблему.

Ну, а если Вам лень это делать или, Вы там что-то другое "думаете", то решайте свою проблему самостоятельно.

vlad257
Offline
Зарегистрирован: 31.05.2020

Извиняюсь. 
Это должно компилировать.

Проблема в следующем.
Есть код:
int BV = analogRead(0);  //button check
Он отражает считывания с аналогового пина, который подключен к клавиатуре.
Если кнопки не нажата BV = 0
Нажата - BV> 10. Горит LED.
позже идет обращение к функции смс.
Она описана в коде ниже.
 
 myVR.end();       
            sendSMS("+380973545446", "Secutiry active");
            myVR.begin(9600);

 

При компиляции проблем никаких нету.
Смс отправляется с GSM SIM800L.
Если строка:
 
int BV = analogRead(0);  //button check
есть.  if даже не выполняется.
То функция смс не выполняется. Без ошибок. просто не работает. Модуль не обрабатывает команды.
Как только я закоментирую строку:
int BV = analogRead(0);  //button check
функция начинает норм работать.

Код работает так:
Считивание с клавиатуры.
если кнопка нажата - горит лампа.

Cчитивание с датчика движения.
Если есть движение 2 раза подряд. Отправляеться смс.

 

#include <OneWire.h>
#include <SoftwareSerial.h>
#include "VoiceRecognitionV3.h"
#include <DFPlayer_Mini_Mp3.h>
SoftwareSerial SIM800(5, 6);
VR myVR(2,3);    // voice recognition

uint8_t records[7]; // save record
uint8_t buf[64];

int ledyellow = 11; 
int ledblue = 8;
int ledred = 9;

int pirmove = 10; //sensormove

int z = 0;
int m = 0;

char pass[4] = {'1', '2', '3', '4'};     //keypad                         
char buttons[4]={'0', '0', '0', '0'};  
int k=0;
int b=0;

#define on   (0) //voice comand
#define off  (1) 
#define tm (2)

int ret;

int p;        //temperature
OneWire ds(13);

String _response = "";  








 
void setup()
{
 
     myVR.begin(9600);
  Serial.begin (9600);
     
    pinMode(ledblue, OUTPUT);
    pinMode(ledred, OUTPUT);
    pinMode(ledyellow, OUTPUT);

    pinMode(pirmove, INPUT); //move

          
   mp3_set_serial (Serial);  // mp3
   delay(100);
   mp3_set_volume(15); 

}

void loop()
{


          
int z=0;
   c:
   digitalWrite(ledred, LOW);
   digitalWrite(ledyellow, LOW);

      

       int BV = analogRead(0);  //button check
        if (BV>10){
       digitalWrite(ledred, HIGH);
delay(1000);
         } 
  
      int pirvalue = digitalRead(pirmove);
      if(pirvalue == HIGH || z >= 2) {            //1:if 1 time move
        digitalWrite(ledblue, LOW);
        delay(1000);
        z=z+1;
        
              if(pirvalue == HIGH || z >= 2){   //2: if 2 times move
                digitalWrite(ledred, HIGH);

            myVR.end();       
            sendSMS("____________", "Secutiry active");
            myVR.begin(9600);
                                             
                                             
              }
              
              else {      //2: 
              goto c;
              }
      }
      else if (pirvalue == LOW) { //1: 
        digitalWrite(ledblue, HIGH);
        delay(2000);
        z = 0; 
          }
        goto c;
      }
} 


void sendSMS(String phone, String message)
{
 
  SIM800.begin(9600);
  
   sendATCommand("AT", true);                    // Отправили AT для настройки скорости обмена данными
  _response = sendATCommand("AT+CMGF=1;&W", true); // Включаем текстовый режима SMS (Text mode) и сразу сохраняем значение (AT&W)!
  sendATCommand("AT+CMGS=\"" + phone + "\"", true);             // Переходим в режим ввода текстового сообщения
  sendATCommand(message + "\r\n" + (String)((char)26), true);   // После текста отправляем перенос строки и Ctrl+Z
 SIM800.end(); 


  
}

String sendATCommand(String cmd, bool waiting) {

  
  String _resp = "";                            // Переменная для хранения результата
  Serial.println(cmd);                          // Дублируем команду в монитор порта
  SIM800.println(cmd);                          // Отправляем команду модулю
  if (waiting) {                                // Если необходимо дождаться ответа...
    _resp = waitResponse();                     // ... ждем, когда будет передан ответ
   Serial.println(_resp);                      // Дублируем ответ в монитор порта
  }
  return _resp;                                           // Возвращаем результат. Пусто, если проблема

}

String waitResponse() {                         // Функция ожидания ответа и возврата полученного результата

  String _resp = "";                            // Переменная для хранения результата
  long _timeout = millis() + 10000;             // Переменная для отслеживания таймаута (10 секунд)
  while (!SIM800.available() && millis() < _timeout)  {}; // Ждем ответа 10 секунд, если пришел ответ или наступил таймаут, то...
  if (SIM800.available()) {                     // Если есть, что считывать...
    _resp = SIM800.readString();                // ... считываем и запоминаем
  }
  else {                                        // Если пришел таймаут, то...
        Serial.println("Timeout...");           // ... оповещаем об этом и...
  }
  return _resp;                                 // ... возвращаем результат. Пусто, если проблема

}




 

Komandir
Offline
Зарегистрирован: 18.08.2018

в 069 строке что происходит ?

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Это метка для goto

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

Komandir пишет:

в 069 строке что происходит ?

это просто кто-то не умеет проектировать структуру программы :) - в процедуре из 60 строк два перехода по метке ...

Подозреваю, что это сделано. чтобы управлять обнулением z .... потому что автор еще не проходил про статик переменные

vlad257
Offline
Зарегистрирован: 31.05.2020
Никакого ответа по теме.
я всего лишь спросил чем считывания с аналогового порта может мешать выполнению фукции.
И привел фукнцию в коде  и  как я считывал.
Ни ответа, ни предположения.
Да код дерьмо, но я бы не писал сюда, если бы он был идеален.
Я новичок в этом деле, и обратился сюда, как к более опытным.
 
Green
Offline
Зарегистрирован: 01.10.2015

Ну а что мешает поставить вывод сериал после вашего аналогрид(0) что бы убедиться выполняется он или нет? Ну и так далее.

vlad257
Offline
Зарегистрирован: 31.05.2020

Спасибо за ответ
когда есть аналогрид(0) он работает прекрасно.
но функция sms нет. Оно заходит в нее отправляет первую команду в модуль. А он не реагирует. То есть не выполняет ее.
Как только я коментрую аналог рид. Sms работает.

И я не могу  понять

каким образом оно может мешать.

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

Мы тоже не можем понять - кто эти "он" , "они", "оно".

Берите самый минимальный вариант - отсылание смс. Работает? Добавьте аналогрид в сериал. Работает? Допишите if(). Продолжает работать?

vlad257
Offline
Зарегистрирован: 31.05.2020

Смс отдельно работают
аналог рид работает отдельно
ставлю смс перед аналог рид - работает
ставлю аналог рид перед смс. - аналог рид работает, смс нет., удаляю аналог рид - смс начинают работать.
Относительно if после аналог рид. Оно даже не выполняется. То есть мешает исключительно аналог рид. 
Для смс не нужно аналог рид. И не нужна та переменная в которую записывается analogRead.

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

У вас там ещё написано всякого.

В то, что аналогрид ломает работу софтсериала смогу поверить только в том случае, если вы умудрились модем повесить на A0.
А чтобы if не выполнялось - это из области невероятных событий.

vlad257
Offline
Зарегистрирован: 31.05.2020

По порядку.
Аналогрид не работу софтсериала ломает. Сериал работает. На GSM модуль идет команда. Но он не отвечает.
Убираю аналог рид - начинает отвечать.

Относитель if 
В коде 
int BV = analogRead(0);
if(BV>10){

digitalWrite(led, HIGH);

}
Когда идет считывание с 0 аналогового пина, там значение 0 - 1. То есть в if оно не идет. LED не горит.

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

sadman41 пишет:
У вас там ещё написано всякого. В то, что аналогрид ломает работу софтсериала смогу поверить только в том случае, если вы умудрились модем повесить на A0. А чтобы if не выполнялось - это из области невероятных событий.

присмотрись - у него два софтсериала. Работа более одного софтсериала в программе, вообще-то, не гарантируется. Все эти трюки с SoftSerial.begin() end() когда работают, а когда нет.

То, что влияет analogRead() - это, конечно, интересно... но вряд ли эта информация полезна для реального применения.

vlad257
Offline
Зарегистрирован: 31.05.2020

b707 пишет:

sadman41 пишет:
У вас там ещё написано всякого. В то, что аналогрид ломает работу софтсериала смогу поверить только в том случае, если вы умудрились модем повесить на A0. А чтобы if не выполнялось - это из области невероятных событий.

присмотрись - у него два софтсериала. Работа более одного софтсериала в программе, вообще-то, не гарантируется. Все эти трюки с SoftSerial.begin() end() когда работают, а когда нет.

То, что влияет analogRead() - это, конечно, интересно... но вряд ли эта информация полезна для реального применения.

Ну так analogRead() не относится ни к одному из SoftSerial.
Да два. Но когда нет analogRead(). тоже два остаються. И работает все нормально.

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

0 - 1 - это подозрительно и несвойственно аналогриду.

Но, если не хотите отлаживать, как я написал - продолжайте искать кошелек под фонарем, а не там, где обронили.

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

очередной вопрос из разряда "как мне перевезти куб щебня на детском самокате? Сменить транспорт не предлагать!!!"

ровно как в соседней ветке про "оптимизацию"

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

vlad257 пишет:

Никакого ответа по теме.

Ну, а чего Вы хотели, если код Вы привели только в 9-ом посте, через 17 часов после открытия темы? Тема в которой нет кода (или есть что-то некомпилируемое, потому что автор "подумал"), обречена на флуд и глум, Вы его и получили.

Теперь Вы код выложили, дайте народу немного отойти, ибо вектор на флуд и глум Вы уже задали, он в одночасье не изменяется. 

Правда, я сомневаюсь, что это минимальный код и из него нельзя ничего выбросить так, чтобы проблема осталась. Но это Ваша проблема. а не моя. Я Вам писал, чем короче код, тем больше вероятность, что кто-то за него возьмётся.

И, да, кстати, крайне важный вопрос - что у Вас за контроллер? Они ведь разные бывают. Колитесь. Почему из Вас всё клещами надо тянуть? Вы не читали правила подготовки вопроса в "Песочнице"?

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

vlad257 пишет:

Когда идет считывание с 0 аналогового пина, там значение 0 - 1. То есть в if оно не идет. LED не горит.

Чот падазрительна...

vlad257
Offline
Зарегистрирован: 31.05.2020

там значения из клавиатуры.
Пока кнопку не нажму значение - 0-1.

Я зделал как вы написали раньше. Та самая проблема.
нет analogRead - работает
есть - sms не работают

буду следовать вашим словам. лишь бы они помогли

функцию sms нету смысла делать короче. поскольку она даже не начинает работать не работать.
или есть?

 

#include <OneWire.h>
#include <SoftwareSerial.h>
SoftwareSerial SIM800(5, 6);

String _response = "";  
 
void setup()
{  
  Serial.begin (9600);  
}

void loop()
{ 
     int BV = analogRead(0);  //button check
        if (BV>50){
        Serial.print("ok");
         }  
sendSMS("+380973545446", "Secutiry active");
    delaay();
} 
void delaay(){
  delay(1000000);
  return;
}

void sendSMS(String phone, String message)
{
 
  SIM800.begin(9600);
  
   sendATCommand("AT", true);                    // Отправили AT для настройки скорости обмена данными
  _response = sendATCommand("AT+CMGF=1;&W", true); // Включаем текстовый режима SMS (Text mode) и сразу сохраняем значение (AT&W)!
  sendATCommand("AT+CMGS=\"" + phone + "\"", true);             // Переходим в режим ввода текстового сообщения
  sendATCommand(message + "\r\n" + (String)((char)26), true);   // После текста отправляем перенос строки и Ctrl+Z
 SIM800.end(); 


  
}

String sendATCommand(String cmd, bool waiting) {

  
  String _resp = "";                            // Переменная для хранения результата
  Serial.println(cmd);                          // Дублируем команду в монитор порта
  SIM800.println(cmd);                          // Отправляем команду модулю
  if (waiting) {                                // Если необходимо дождаться ответа...
    _resp = waitResponse();                     // ... ждем, когда будет передан ответ
   Serial.println(_resp);                      // Дублируем ответ в монитор порта
  }
  return _resp;                                           // Возвращаем результат. Пусто, если проблема

}

String waitResponse() {                         // Функция ожидания ответа и возврата полученного результата

  String _resp = "";                            // Переменная для хранения результата
  long _timeout = millis() + 10000;             // Переменная для отслеживания таймаута (10 секунд)
  while (!SIM800.available() && millis() < _timeout)  {}; // Ждем ответа 10 секунд, если пришел ответ или наступил таймаут, то...
  if (SIM800.available()) {                     // Если есть, что считывать...
    _resp = SIM800.readString();                // ... считываем и запоминаем
  }
  else {                                        // Если пришел таймаут, то...
        Serial.println("Timeout...");           // ... оповещаем об этом и...
  }
  return _resp;                                 // ... возвращаем результат. Пусто, если проблема

}




 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

vlad257 пишет:

буду следовать вашим словам. 

Так следуй! Тебя про контроллер спросили - пять раз надо спрашивать?

vlad257
Offline
Зарегистрирован: 31.05.2020

Arduino Uno.
клавиатура аналоговая - от "RobotDyn"
отправка sms - GSM-SIM800L 

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

По поводу кода, Вы там ребёнка с водой выплеснули.

Я немного поправил Ваш код.

Сделайте точно, что я говорю:

1. Выполните код как есть
2. Выполните с закомментированной строкой №16
3. Выложите сюда копипасты монитора порта

После этого, возможно, я снова поправлю и снова попрошу Вас сделать тоже самое.

#include <OneWire.h>
#include <SoftwareSerial.h>
SoftwareSerial SIM800(5, 6);

String _response = "";

void setup()
{
  Serial.begin (9600);
  Serial.println("===== Started ====");
}

void loop()
{
  int BV = 321;
  BV = analogRead(0);  //button check
  Serial.println("BV=");Serial.println(BV);
  if (BV > 50) {
    Serial.println("ok");
  }
  sendSMS("+380973545446", "Secutiry active");
  delaay();
}

void delaay() {
  delay(1000000);
  return;
}

void sendSMS(String phone, String message)
{
  SIM800.begin(9600);
  sendATCommand("AT", true);                    // Отправили AT для настройки скорости обмена данными
  sendATCommand("AT+CMGF=1;&W", true); // Включаем текстовый режима SMS (Text mode) и сразу сохраняем значение (AT&W)!
  sendATCommand("AT+CMGS=\"" + phone + "\"", true);             // Переходим в режим ввода текстового сообщения
  sendATCommand(message + "\r\n\032", true);   // После текста отправляем перенос строки и Ctrl+Z
  SIM800.end();
}

void sendATCommand(String cmd, bool waiting) {
  String _resp = "";                            // Переменная для хранения результата
  Serial.println(cmd);                          // Дублируем команду в монитор порта
  SIM800.println(cmd);                          // Отправляем команду модулю
  if (waiting) {                                // Если необходимо дождаться ответа...
    Serial.println("Going to wait");           // ... оповещаем об этом и...
	Serial.println("waitResponse()=");
   Serial.println(waitResponse());                     // ... ждем, когда будет передан ответ
  }
  return _resp;                                           // Возвращаем результат. Пусто, если проблема

}

String waitResponse() {                         // Функция ожидания ответа и возврата полученного результата
  String _resp = "";                            // Переменная для хранения результата
  long _timeout = millis() + 10000;             // Переменная для отслеживания таймаута (10 секунд)
  while (!SIM800.available() && millis() < _timeout)  {}; // Ждем ответа 10 секунд, если пришел ответ или наступил таймаут, то...
  if (SIM800.available()) {                     // Если есть, что считывать...
    _resp = SIM800.readString();                // ... считываем и запоминаем
  }
  else {                                        // Если пришел таймаут, то...
    Serial.println("Timeout...");           // ... оповещаем об этом и...
  }
  return _resp;                                 // ... возвращаем результат. Пусто, если проблема
}

Да, кстати, в строках №№ 55 и 56 грубая ошибка. На нынешнюю проблему не влияет, но так делать нельзя!

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

И чо, клавиатура у тебя тока 0 и 1 отдает?

SLKH
Offline
Зарегистрирован: 17.08.2015

"Пусть безумная идея - 

не ругайте сгоряча"

Заменить имя переменной "BV" на что-нибудь более другое.

vlad257
Offline
Зарегистрирован: 31.05.2020

Спасибо большое зделал так как вы сказали.

 не знаю как вставлять изображения
по этому:
https://ibb.co/QXhM40k
https://ibb.co/QNMTfZD
 
1 вариант как вы понимаете з той строкой.
всюда 
Timeout...
Между слов когда gsm выполняет функцию - возвращает ОК

2ссылка
без той строки
всё работает)
смс прийшло.

vlad257
Offline
Зарегистрирован: 31.05.2020

Делал уже)

int BV = analogRead(0);

int BV = analogRead(A0);

int BV;
int analogPin = A0;
loop{
BV=analogRead(analogPin);
}

переменные тоже менял

vlad257
Offline
Зарегистрирован: 31.05.2020

DetSimen пишет:

И чо, клавиатура у тебя тока 0 и 1 отдает?


нет клавиатура дает в зависимости от кнопки от 500 до 1020 примерно.
Если кнопка не нажата - отдает 0-1

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

vlad257 пишет:

 не знаю как вставлять изображения

Простите, Вы специально издеваетесь? Нафига мне Ваши изображения? В мониторе порта разве есть что-то кроме текста? Вот этот текст и скопипастите сюда! Для обоих случаев и не забудьте подписать что для какого.

vlad257
Offline
Зарегистрирован: 31.05.2020
1случай(НЕ закоментированая 16 строка)
= Started ====
BV=
8
AT
Going to wait
waitResponse ()=
Timeout...
AT+CMGF=1; &W
Going to wait
waitResponse ()=
Timeout...
 
AT+CMGS="+380973545446"
Going to wait
waitResponse()=
 

2 случай(закоментированая 16 строка)

===== Started ====
BV=
321
ok
AT
Going to wait
waitResponse()=
AT
 
OK
 
AT+CMGF=1;&W
Going to wait
waitResponse()=
AT+CMGF=1;&W
 
OK
 
AT+CMGS="+380973545446"
Going to wait
waitResponse()=
AT+CMGS="+380973545446"
 
Secutiry active
 
Going to wait
waitResponse()=
Secutiry active
 
vlad257
Offline
Зарегистрирован: 31.05.2020

Ну чё парни?
не знаете причину?

Ирокез
Offline
Зарегистрирован: 27.08.2019

А выполняеться – это что делать?

vlad257
Offline
Зарегистрирован: 31.05.2020

Не понимаю вопрос.

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

У нас нет проблем с аналоговым пином в разнообразнейших комбинациях. Криминала в скетче лично я не вижу.

vlad257
Offline
Зарегистрирован: 31.05.2020

Ну так и почему может не работать gsm модуль из-за analogRead?

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

vlad257 пишет:

Ну чё парни?
не знаете причину?

Нет не знаем. Но, лично я готов продолжить исследование до победного конца, только на этот раз, простите, в режиме zero-tolerance.

Я уже устал по два или три раза просить Вас что-то мне сказать или сделать. Поэтому, хотите - продолжим, но - один косяк (не выложили то, что просил, или выложили не так) - я второй раз не прошу, а тихо сливаюсь из темы.

Продолжим?

Komandir
Offline
Зарегистрирован: 18.08.2018

BV стандартный макрос - #define _BV(bit) (1 << (bit))

Вам уже писали придумать ДРУГОЕ имя переменной - вдруг получится ?

vlad257
Offline
Зарегистрирован: 31.05.2020

извините за прошлое, парни.
Готов продолжить.
Постараюсь без тупняков.

vlad257
Offline
Зарегистрирован: 31.05.2020

Не получилось.
Даже пину переменную давал.

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

Хорошо, только я не обещаю "в режиме чата". Сейчас я подготовлю новый тест и инструкции по его запуску. Но если не успею выложить сегодня, выложу завтра.

vlad257
Offline
Зарегистрирован: 31.05.2020

Спасибо

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

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

vlad257
Offline
Зарегистрирован: 31.05.2020

Просто не до конца понимаю суть просьбы.
В последнем коде который вы мне скидывали. Там только стандартные. Которые у всех одинаковые.
Ссылки врятли найду на все которые скачал. 
НО засунул все свои библиотеки в 1 архив.
Думаю так будет даже проще.
https://github.com/KovalchukVLad/library.git

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

Это интересно. А что, существует какое-то специальное место, где лежат "стандартные библиотеки"? Помоему они все на гите, и стандартные и нестандартные