Существует так много последовательных библиотек программного обеспечения, в чем разница между ними? И какой я могу использовать с моим Arduino Nano? Для моего Arduino Nano мне нужен один аппаратный последовательный порт и один программный последовательный порт со скоростью 115200 бод.
На каких выводах Arduino Nano можно использовать последовательную библиотеку программного обеспечения?
serial
arduino-nano
uart
Уильям Рой
источник
источник
key=getKey();
свой GSM (используя 2 и 3 контакт Arduino Uno), я не получаю SMS. Помоги мне, пожалуйста.Ответы:
В этом ответе перечислены 4 основных варианта:
HardwareSerial
, всегда лучший. Просто используйте предопределеннуюSerial
переменную. На некоторых Arduinos есть дополнительные HardwareSerial порты, названныеSerial1
,Serial2
и т.д. Nano имеет толькоSerial
.AltSoftSerial
Лучшие из серийных программных библиотек. Разрешен только один экземпляр, и он должен использоваться на одном из выводов ввода ввода (выводы 8 и 9 для Nano).Мой
NeoSWSerial
следующий лучший. Он работает на любых двух выводах, но только со скоростью 9600, 19200 и 38400 бод.SoftwareSerial
это худший выбор. Он работает на любых двух выводах, но очень неэффективен. Он отключает прерывания на все время отправки или получения символа и не может делать оба одновременно (в отличие от всех других последовательных вариантов). Это может помешать другим частям вашего эскиза, другим устройствам или библиотекам.Если вы могли бы использовать более низкую скорость передачи данных, вы можете сохранить ваши отладочные отпечатки на
Serial
и использовать либоAltSoftSerial
илиNeoSWSerial
для вашего устройства.Но если вам нужно использовать 115200, единственный надежный выбор
Serial
. ХотяAltSoftSerial
иSoftwareSerial
разрешить эту скорость передачи данных, они могут не отправлять / получать данные правильно.В этом случае я бы предложил использовать
Serial
для устройства 115200. Если вы не используете интернет-провайдера, вам придется отключить устройство, чтобы загрузить новый эскиз через USB.Затем используйте
AltSoftSerial
илиNeoSWSerial
для ваших отладочных операторов. Вам понадобится адаптер TTL Serial-to-USB (также известный как FTDI) на выбранных контактах для подключения к ПК. ЭтаSerial Monitor
или другая программа-эмулятор терминала будет считывать данные с этого COM-порта USB.источник
NeoICSerial
просто добавляетattachInterrupt
метод кAltSoftSerial
. Вам, вероятно, не нужно обрабатывать каждый символ в прерывании. Просто используйтеAltSoftSerial
и позвоните,available()
а затем,read()
если символ готов. Точно так жеNeoHWSerial
добавляет ту жеattachInterrupt
функцию в ядроHardwareSerial
. Тем не менее,NeoSWSerial
это совершенно другой класс (он также имеетattachInterrupt
функцию).Последовательное программное обеспечение эмулирует последовательный порт, в отличие от собственного порта, в котором есть регистр для сохранения всех битов по порядку, и они устанавливают флаг для вызова основного цикла, а в последовательном программном обеспечении ничего такого нет. Серийный номер программного обеспечения должен получать все биты, один за другим, поэтому вы должны прочитать цифровой порт, подождать определенное время и снова прочитать цифровой вывод. Вы должны сделать это 10 раз (1 начальный бит, 8 бит данных и 1 конечный бит). Время очень важно. Для использования серийного программного обеспечения вам нужно больше беспокоиться о производительности.
Вы можете использовать цифровой вывод прерывания для вывода RX, так что вас «вызывают» на нижней границе (стартовый бит) и вы получаете 8 бит.
источник