Аналоговый пин
- Войдите на сайт для отправки комментариев
Пт, 05/06/2020 - 01:18
Привет всем.
Возникла неожиданная проблема.
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; }
Спасибо.
А что аналогового вы хотите найти на пине 0 ???
Приведите минимально возможный скетч который демонстрирует проблему, но который можно скомпилировать. По тем кускам что вы запостили ничего особо не понятно.
А что аналогового вы хотите найти на пине 0 ???
analogRead(0) == analogRead(A0) == analogRead(14)
analogRead(0) == analogRead(A0) == analogRead(14)
сравниваете? :)
vlad257 - память?
сравниваете? :)
Намекаю.)
Думаю этого будет достаточно
функцию key_pad не добавляю поскольку, if даже не выполняеться.
Мешает конкретно зчитывание с аналогово пина.
analogRead(0) значит analogRead(A0)
Я менял на другие пины. но ничего.
конретно мешает.
int BV = analogRead(0); //button check
VR myVR(2,3); - распознавание голоса. Но оно идет позже. Если есть вопросы - отвечу сразу. Спасибо.
Думаю этого будет достаточно
И совершенно напрасно так думаете. Если бы Вы знали, чего достаточно, а чего - нет, Вы бы сами всё сделали и этого поста бы не было.
Вам ведь ясно написали:
Приведите минимально возможный скетч который демонстрирует проблему, но который можно скомпилировать.
То, что Вы выложили - не компилируется. Я не могу запустить его и увидеть проблему. Что мне делать? Дополнять своими функциями-заглушками? Или не запуская сидеть и исследовать? А не слишком ли много суеты и усилий для решения чужой проблемы?
Если Вам реально нужна быстрая помощь, то не поленитесь сделать следующее:
1. Подготовит минимальный скетч, который компилируется, работает и демонстрирует проблему. Минимальный - это значит выбросьте всё, что можно выбросить так, чтобы проблема сохранялась - всё! Чем скетч будет меньше, тем лучше, тем больше вероятность, что кто-то не поленится в нём разбираться.
2. Выложите этот скетч сюда и толково объясните как воспроизвести проблему.
Ну, а если Вам лень это делать или, Вы там что-то другое "думаете", то решайте свою проблему самостоятельно.
Извиняюсь.
Это должно компилировать.
Код работает так:
Считивание с клавиатуры.
если кнопка нажата - горит лампа.
в 069 строке что происходит ?
Это метка для goto
в 069 строке что происходит ?
это просто кто-то не умеет проектировать структуру программы :) - в процедуре из 60 строк два перехода по метке ...
Подозреваю, что это сделано. чтобы управлять обнулением z .... потому что автор еще не проходил про статик переменные
Да код дерьмо, но я бы не писал сюда, если бы он был идеален.
Я новичок в этом деле, и обратился сюда, как к более опытным.
Ну а что мешает поставить вывод сериал после вашего аналогрид(0) что бы убедиться выполняется он или нет? Ну и так далее.
Спасибо за ответ
когда есть аналогрид(0) он работает прекрасно.
но функция sms нет. Оно заходит в нее отправляет первую команду в модуль. А он не реагирует. То есть не выполняет ее.
Как только я коментрую аналог рид. Sms работает.
И я не могу понять
каким образом оно может мешать.
Мы тоже не можем понять - кто эти "он" , "они", "оно".
Берите самый минимальный вариант - отсылание смс. Работает? Добавьте аналогрид в сериал. Работает? Допишите if(). Продолжает работать?
Смс отдельно работают
аналог рид работает отдельно
ставлю смс перед аналог рид - работает
ставлю аналог рид перед смс. - аналог рид работает, смс нет., удаляю аналог рид - смс начинают работать.
Относительно if после аналог рид. Оно даже не выполняется. То есть мешает исключительно аналог рид.
Для смс не нужно аналог рид. И не нужна та переменная в которую записывается analogRead.
У вас там ещё написано всякого.
В то, что аналогрид ломает работу софтсериала смогу поверить только в том случае, если вы умудрились модем повесить на A0.
А чтобы if не выполнялось - это из области невероятных событий.
По порядку.
Аналогрид не работу софтсериала ломает. Сериал работает. На GSM модуль идет команда. Но он не отвечает.
Убираю аналог рид - начинает отвечать.
Относитель if
В коде
int BV = analogRead(0);
if(BV>10){
digitalWrite(led, HIGH);
}
Когда идет считывание с 0 аналогового пина, там значение 0 - 1. То есть в if оно не идет. LED не горит.
присмотрись - у него два софтсериала. Работа более одного софтсериала в программе, вообще-то, не гарантируется. Все эти трюки с SoftSerial.begin() end() когда работают, а когда нет.
То, что влияет analogRead() - это, конечно, интересно... но вряд ли эта информация полезна для реального применения.
присмотрись - у него два софтсериала. Работа более одного софтсериала в программе, вообще-то, не гарантируется. Все эти трюки с SoftSerial.begin() end() когда работают, а когда нет.
То, что влияет analogRead() - это, конечно, интересно... но вряд ли эта информация полезна для реального применения.
Ну так analogRead() не относится ни к одному из SoftSerial.
Да два. Но когда нет analogRead(). тоже два остаються. И работает все нормально.
0 - 1 - это подозрительно и несвойственно аналогриду.
Но, если не хотите отлаживать, как я написал - продолжайте искать кошелек под фонарем, а не там, где обронили.
очередной вопрос из разряда "как мне перевезти куб щебня на детском самокате? Сменить транспорт не предлагать!!!"
ровно как в соседней ветке про "оптимизацию"
Ну, а чего Вы хотели, если код Вы привели только в 9-ом посте, через 17 часов после открытия темы? Тема в которой нет кода (или есть что-то некомпилируемое, потому что автор "подумал"), обречена на флуд и глум, Вы его и получили.
Теперь Вы код выложили, дайте народу немного отойти, ибо вектор на флуд и глум Вы уже задали, он в одночасье не изменяется.
Правда, я сомневаюсь, что это минимальный код и из него нельзя ничего выбросить так, чтобы проблема осталась. Но это Ваша проблема. а не моя. Я Вам писал, чем короче код, тем больше вероятность, что кто-то за него возьмётся.
И, да, кстати, крайне важный вопрос - что у Вас за контроллер? Они ведь разные бывают. Колитесь. Почему из Вас всё клещами надо тянуть? Вы не читали правила подготовки вопроса в "Песочнице"?
Когда идет считывание с 0 аналогового пина, там значение 0 - 1. То есть в if оно не идет. LED не горит.
Чот падазрительна...
там значения из клавиатуры.
Пока кнопку не нажму значение - 0-1.
Я зделал как вы написали раньше. Та самая проблема.
нет analogRead - работает
есть - sms не работают
буду следовать вашим словам. лишь бы они помогли
функцию sms нету смысла делать короче. поскольку она даже не начинает работать не работать.
или есть?
буду следовать вашим словам.
Так следуй! Тебя про контроллер спросили - пять раз надо спрашивать?
Arduino Uno.
клавиатура аналоговая - от "RobotDyn"
отправка sms - GSM-SIM800L
По поводу кода, Вы там ребёнка с водой выплеснули.
Я немного поправил Ваш код.
Сделайте точно, что я говорю:
1. Выполните код как есть
2. Выполните с закомментированной строкой №16
3. Выложите сюда копипасты монитора порта
После этого, возможно, я снова поправлю и снова попрошу Вас сделать тоже самое.
Да, кстати, в строках №№ 55 и 56 грубая ошибка. На нынешнюю проблему не влияет, но так делать нельзя!
И чо, клавиатура у тебя тока 0 и 1 отдает?
"Пусть безумная идея -
не ругайте сгоряча"
Заменить имя переменной "BV" на что-нибудь более другое.
Спасибо большое зделал так как вы сказали.
не знаю как вставлять изображения
по этому:
https://ibb.co/QXhM40k
https://ibb.co/QNMTfZD
1 вариант как вы понимаете з той строкой.
всюда
Timeout...
Между слов когда gsm выполняет функцию - возвращает ОК
2ссылка
без той строки
всё работает)
смс прийшло.
Делал уже)
int BV = analogRead(0);
int BV = analogRead(A0);
переменные тоже менял
И чо, клавиатура у тебя тока 0 и 1 отдает?
нет клавиатура дает в зависимости от кнопки от 500 до 1020 примерно.
Если кнопка не нажата - отдает 0-1
не знаю как вставлять изображения
Простите, Вы специально издеваетесь? Нафига мне Ваши изображения? В мониторе порта разве есть что-то кроме текста? Вот этот текст и скопипастите сюда! Для обоих случаев и не забудьте подписать что для какого.
2 случай(закоментированая 16 строка)
Ну чё парни?
не знаете причину?
А выполняеться – это что делать?
Не понимаю вопрос.
У нас нет проблем с аналоговым пином в разнообразнейших комбинациях. Криминала в скетче лично я не вижу.
Ну так и почему может не работать gsm модуль из-за analogRead?
Ну чё парни?
не знаете причину?
Нет не знаем. Но, лично я готов продолжить исследование до победного конца, только на этот раз, простите, в режиме zero-tolerance.
Я уже устал по два или три раза просить Вас что-то мне сказать или сделать. Поэтому, хотите - продолжим, но - один косяк (не выложили то, что просил, или выложили не так) - я второй раз не прошу, а тихо сливаюсь из темы.
Продолжим?
BV стандартный макрос - #define _BV(bit) (1 << (bit))
Вам уже писали придумать ДРУГОЕ имя переменной - вдруг получится ?
извините за прошлое, парни.
Готов продолжить.
Постараюсь без тупняков.
Не получилось.
Даже пину переменную давал.
Хорошо, только я не обещаю "в режиме чата". Сейчас я подготовлю новый тест и инструкции по его запуску. Но если не успею выложить сегодня, выложу завтра.
Спасибо
Дайте, пожалуйста ссылки на Ваши библиотеки, а то я сдуру скачаю другие с такими же названиями.
Просто не до конца понимаю суть просьбы.
В последнем коде который вы мне скидывали. Там только стандартные. Которые у всех одинаковые.
Ссылки врятли найду на все которые скачал.
НО засунул все свои библиотеки в 1 архив.
Думаю так будет даже проще.
https://github.com/KovalchukVLad/library.git
Это интересно. А что, существует какое-то специальное место, где лежат "стандартные библиотеки"? Помоему они все на гите, и стандартные и нестандартные