Официальный сайт компании Arduino по адресу arduino.cc
Проблема с SoftwareSerial
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Втр, 22/01/2019 - 19:27
Доброго дня коллеги!
Копаясь в своем неработающем коде с датчиком отпечатка пальца локализовал проблему в неработающей библиотеке SoftwareSerial. Загрузил в Arduino Nano вот такой простой код.
#include <SoftwareSerial.h> SoftwareSerial mySerial(2, 3); void setup() { Serial.begin(57600); } Serial.println("Test string1"); mySerial.begin(4800); mySerial.println("Test string2"); } void loop() { if (mySerial.available()) Serial.write(mySerial.read()); if (Serial.available()) mySerial.write(Serial.read()); }
В монитор порта выводится только Test string1. Пробовал меня скорость, уменьшать до 2400, поднимать до 115200, выравнивал скорости обмена. Ничего не происходит. Уже размышлял по поводу снести библиотеку (не получилось), переустанавливал Arduino IDE, искал замену этой библиотеке (кроме NewSoftSerial ничего толком и не нашел), менял платы - ESP01, NodeMCU, Wemos пробовал. Подскажите куда еще глянуть/копнуть?
Пины 2 и 3 к чему подключены и где вы хотите строку увидеть?
2 и 3 на Arduino Nano. Строку я хочу увидеть в том же самом мониторе хардверного последовательного порта.
Надеюсь, что на другую Arduino Nano, а не на ту же самую...
На туже самую. Вроде как код именно это и предполагает: вывод строки в аппаратный порт, программный порт читает, что послано в аппаратный, пишет свое, аппаратный читает что в программном и так далее. Я именно так сей код понял.
На туже самую. Вроде как код именно это и предполагает: вывод строки в аппаратный порт, программный порт читает, что послано в аппаратный, пишет свое, аппаратный читает что в программном и так далее. Я именно так сей код понял.
неправильно поняли. Этот код предполагает посмотреть в мониторе порта (отладка), что творится на софтсериале. Также можно послать чтонибудь на софт сериал через отладку (монитор порта). При этом естественно Serial (пины 0 и 1) ни с чем НЕ должен быть соединён (он ведь уже соединён по юсб с компом). А софт сериал подключаете к нужному вам устройству, обмен с которым вы и хотите посмотреть в мониторе порта.
По сути если 2 и 3 пин закорочу, я получу все то. что отправляю, верно? Ничего не приходит.
По сути если 2 и 3 пин закорочу, я получу все то. что отправляю, верно? Ничего не приходит.
куда и как собираетесь отправлять ???
По сути если 2 и 3 пин закорочу, я получу все то. что отправляю, верно? Ничего не приходит.
Ничего не получите. Возьмите две ардуины, соедините софтсериалом, тогда всё должно работать.
Для нормальной проверки softserial вам нужна или вторая ардуина или USB->Serial конвертер.
По сути если 2 и 3 пин закорочу, я получу все то. что отправляю, верно?
Нет, не верно. Софт сериал, в отличии от хард, не умеет одновременно принимать и отправлять. Прием происходит по прерыванию "изменение состояния входного пина", и обрабатывается процессором, как и передача. Процессор, как легко догадаться, - ОДИН! ;)))
Нужна другая ардуина или USB-UART, даже дешманский USB-COM из соседнего компутерного магазина, хоть и дорого обойдется, но подойдет - он на том же CH341 чипе сделан.
Я вообще в крайних случаях в uart пихаю Bluetooth адаптер и на мобильнике смотрю что там шлется.
Подключите к 2 и 3 пину и наблюдайте свои данные.
А что, никто не заметил 8-ую строку? Или это я что-то туплю под вечер? По мне так этот код не может не то что что-то выводить, но даже в принципе компилироваться.
Мило! А я в код даже не посмотрел.
//Уже размышлял по поводу снести библиотеку
Сносите без размышлений. Это дерьмо негодное. Не умеет принимать данные в любой момент и блокирует прерывания на все время приема или передачи.
А мне нравится software uart
Баланс железки щас запросил
b37.51 .u38d1h21m
Uptime больше месяца.
Спасибо за верный посыл. Соединил, как Вы и написали, через переходник USB-UART. Работает, отправляет данные и принимает. Вернулся к началу, что называется. Все работает по отдельности, а вот вместе - никак. Буду копаться дальше.