rs485 blynk
- Войдите на сайт для отправки комментариев
Пнд, 25/10/2021 - 22:56
Всем доброго времени суток, произошла следующая проблема:
arduino nano по модулю RS485 передает значение millis() на arduino mega,c этим проблем нет ,связь с интернетом осуществляется с помощью arduino ethernet shield 2 (W5500) , далее надо передать это значение посредствам сервиса Blynk на смартфон ( все это как тестовый вариант, просто чтоб проверить что все работает, а дальше уже будет все остальное) и столкнулся с проблемой, что при добавлении строк коннета с блинком перестает работать прием от rs485 (диод RX на меге не мигает) , то есть работает либо одно , либо другое, код соответственно :
mega
видимо не использовать софтовый сериал, когда есть хардовые
А код нормально вставить не судьба? При обсуждении будем говорить "строка №ХЗ, ближе к верху низа"?
ua6em, а разве есть разница использовать ли программный или аппаратный порт? как бы и этот работает и проблем нет,
ЕвгенийП, извините , не сообразил, а сейчас не могу найти кнопку редактировать
ua6em, а разве есть разница использовать ли программный или аппаратный порт? как бы и этот работает и проблем нет
Что у вас там за модуль RS485?
Разница между программным и аппаратным портом есть и значительная.
Но в данном конкретном случае это не так важно, поскольку в приведенном Вами коде отсутствует опрос входного порта - строка с вызовом test закоментирована.
не сообразил, а сейчас не могу найти кнопку редактировать
Нету её. Просто вставьте ещё раз отдельным сообщением - так обсуждать невозможно.
mega
nano
ua6em
вот такая штука https://ae01.alicdn.com/kf/HTB1HmV5XtzvK1RkSnfoq6zMwVXal/TTL-RS485-Arduino-Max458-5-44-14-1.jpg
GarryC
строка 43 закомментирована, но на 45 эта функция вызывается через таймер (32 его объявление)
Комментарий в строках №№ 9-12 относится у Uno, а не к Меге. В Меге SPI - это пины 50-53. А Вы на пины 50 и 51 посадили софт-сериал (строка 13). Вот они и конфликтуют.
Кстати, не скажете НАХРЕНА использовать софт-сериал на Меге, у которой аж три аппаратных сериала?
то что закомментировано относится к ethernet shield w5500 с помощью которого я собственно и соединяю мегу с интернетом
а софт порт я делаю потому что уже делал его при связи двух уно , нано - уно , уно - мега и проблем нет, а вы думаете что в этом может заключаться проблема?
Кстати, не скажете НАХРЕНА использовать софт-сериал на Меге, у которой аж три аппаратных сериала?
это не наш метод )))
нет он будет спорить сейчас. Это ппц, ТС, для начала подключи на хард сериал, не тупи!
то что закомментировано относится к ethernet shield w5500 с помощью которого я собственно и соединяю мегу с интернетом
Вы только не обижайтесь, но "для альтернативно-одарённых" повторяю помедленнее, постарайтесь понять о чём я.
Номера пинов, указанны в том комментарии верны если Вы подключаете w5500 к Uno!!! Поскольку Вы подключаете к Меге, пины в том тексте надо заменить на 50-53. Это понятно? Если нет, то "для совсем тупых" - если w5500 подключается к Меге, то НЕЛЬЗЯ (медленнее - Н Е Л Ь З Я) использовать пины 50-53. А Вы их используете в строке №13. Вот и вся Ваша проблема.
Если и так непонятно, то я - пас. Тогда только к терапевту :-(
а вы думаете что в этом может заключаться проблема?
Нет, не думаю. В чём проблема я уже Вам сказал трижды.
добавил такую функцию
сделал Serial.begin(9600);
и таймер перевел на эту функцию и все тоже самое, если подключать Blynk перестает даже RX моргать
добавил такую функцию
если подключать Blynk перестает даже RX моргать
Не, это не достижение. Вот если бы чего бабахнуло - вот это было б круто.
А так - сами не понимаете, что делаете. И советов не читаете... типа - сам знаю!
добавил такую функцию
А пины-то SPI'ные освободили? Или я тут зря клавиатуру протирал?
да круто вроде все работает, спасибо
Ну, слава Богу :-)
почему в данной ситуации пишет не сохраненное значение а "OutputData i = -1" если i = 10 то пишет что нулю равно, пробовал сохранение в буфер , пробовал parseInt() но результат такой же.
if (Serial.available() > 0) { <<<<<<<<<<<<<<<<<<<
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
a incomingByte должен быть того типа данных который нужен ?(просто слово Byte смутило) =)
слово Byte смутило) =)
И не зря
В общем то, в словаре все написано: https://www.arduino.cc/reference/en/language/functions/communication/serial/read/
Если available() > 0, то можно и byte. А так - функция возвращает int = -1, если в буфере ничего нет.
я сделал вот так
но вывод все равно выдает такой "OutputData i = 10"
а это может быть связанно с тем что вызов двух функций на таймерах
может типа интервал надо поменять просто обычно глобальные переменные легко работают и никаких проблем не было
может типа интервал надо поменять ...
Может, типа, надо какую-нибудь книжку прочитать про программирование, а потом уж пытаться с прерываниями работать?
Гуглите про волшебное слово "volatile". Читайте разбирайтесь пока не дойдёт почему Ваш пример без него через пень-колоду работает.
"Может, типа, надо какую-нибудь книжку .." - универсальная фраза ,ничего по существу
"Может, типа, надо какую-нибудь книжку .." - универсальная фраза ,ничего по существу
Вот как раз про книжку - самое по существу для Вас.
Но во втором абзаце было и "по существу в Вашем понимании". Там было прямо сказано в чём ошибка и дано ключевое слово для поиска. Вы этого не заметили?
Извинения за "ничего по существу" будут?
"Но во втором абзаце было и "по существу в Вашем понимании". Там было прямо сказано в чём ошибка и дано ключевое слово для поиска. Вы этого не заметили?" - да я видел , спасибо, но так я ответил лишь на слова про книгу. а по поводу извинений, нее) цинизм кормить нельзя
Понято! Привет Эду Овечкину, если увидите.
но вывод все равно выдает такой "OutputData i = 10"
а что вы ожидали?
может и правда книжку почитать?
так я ответил лишь на слова про книгу. а по поводу извинений, нее) цинизм кормить нельзя
то есть вы 100% уверены, что учиться вам не нужно, вам и без всяких книжек ОБЯЗАНЫ выложить готовое решение на блюде?
А не пойти ли вам на три буквы после этого?
я сюда пришел за советом по проблеме которую для себя обнаружил, я ни кого не прошу мне помогать , любая помощь добровольна, советы как например "книжку прочитать" я воспринимаю как либо флуд(просто не по теме) либо желания человека показать свою значимость, я ценю свое время и просто хочу сделать свою жизнь проще , а не углубляться в различные тонкости архитектуры. Вы видимо свое не цените, раз в бОльшей степени хотите научить меня жизни ,чем помочь мне
я ценю свое время и просто хочу сделать свою жизнь проще , а не углубляться в различные тонкости архитектуры.
=== то есть углубляться в тонкости за вас будет кто-то другой?
Нет, мы как раз ценим время. Именно для того, чтобы не тратить кучу времени на ответы на тупые вопросы - вас и посылают читать книжки.
Помочь можно по разному. Здесь принято помогать, заставляя клиента изучать документацию и находить ответы самостоятельно. Если вам такое не подходит - ищите других помошников.
b707, да оставьте Вы, ничего Вы ему не объясните. Вы-то, в отличие от него, поняли мой пост #31, так что присоединяйтесь :-)
Гуглите про волшебное слово "volatile". Читайте разбирайтесь пока не дойдёт почему Ваш пример без него через пень-колоду работает.
Может, типа, надо какую-нибудь книжку прочитать про программирование, а потом уж пытаться с прерываниями работать?
Может, типа, надо какую-нибудь книжку прочитать про программирование, а потом уж пытаться с прерываниями работать?
Посоветовать можно, прежде всего, не пренебрегать правилами сетевой этики. В частности, почитать форум прежде, чем писать.
IgorAl, мы долго и старательно собирали всякие полезности в специальной теме.