Arduino:Библиотеки/SoftwareSerial

Материал из Онлайн справочника
Версия от 12:27, 8 июля 2023; EducationBot (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Библиотека SoftwareSerial[1]

Все платы Arduino по умолчанию поддерживают последовательную передачу данных. Она осуществляется через 0-ой и 1-ый цифровые контакты, а также через UART – это узел вычислительных устройств, встроенный в чип ATmega. Благодаря UART плата может осуществлять последовательную коммуникацию, даже если чип занимается чем-то другим, но с тем условием, что во время коммуникации не переполняется 64-байтный буфер последовательного порта.

Библиотека SoftwareSerial была разработана, чтобы последовательную коммуникацию можно было выполнять не только на 0-ом и 1-ом, но и на других цифровых контактах Arduino. Это выполняется на программном уровне, благодаря чему библиотека, собственно, и получила свое название – «SoftwareSerial» в переводе означает «последовательная коммуникация, организованная программным методом». С помощью библиотеки SoftwareSerial можно настроить несколько последовательных портов, работающих на скорости до 115200 бит/с. Кроме того, у объекта SoftwareSerial есть специальный параметр, позволяющий инвертировать входящие сигналы – некоторые устройства требуют именно такого протокола передачи данных.

Версия SoftwareSerial, включенная в IDE Arduino 1.0 и позже, основана на библиотеке NewSoftSerial от Микала Харта (Mikal Hart).

Ограничения

Эта библиотека обладает следующими ограничениями:

  • Нельзя одновременно получать данные сразу несколькими портами. В конкретный момент времени это может делать только один порт.
  • Прерывания поддерживаются не на всех контактах Mega и Mega2560, поэтому для RX можно использовать только следующие: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).
  • Прерывания поддерживаются не на всех контактах Leonardo и Micro, поэтому для RX можно использовать только следующие: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
  • На Arduino/Genuino 101 максимальная скорость передачи данных через RX-контакт составляет 57600 бит/с.
  • На Arduino/Genuino 101 на 13-ом контакте RX не работает.

Если ваш проект требует одновременную коммуникацию сразу по нескольким портам, воспользуйтесь библиотекой AltSoftSerial, разработанной Полом Стоффрегеном (Paul Stoffregen). Она исправляет и другие проблемы SoftwareSerial, но имеет собственные ограничения.

Функции

Библиотека Software Serial

  • Software Serial Example - Объясняет, как использовать библиотеку SoftwareSerial... потому что иногда одного последовательного порта просто недостаточно.
  • Two Port Receive - Как работать с несколькими портами типа Software Serial.

См.также

Внешние ссылки