Arduino:Библиотеки/SoftwareSerial: различия между версиями
Myagkij (обсуждение | вклад) |
Нет описания правки |
||
Строка 1: | Строка 1: | ||
{{Arduino панель перехода}} | {{Arduino панель перехода}} | ||
{{Перевод от Сubewriter}} | {{Перевод от Сubewriter}} | ||
Строка 48: | Строка 48: | ||
<references /> | <references /> | ||
[[Категория:Стандартные библиотеки]] | [[Категория:Стандартные библиотеки]] |
Версия от 11:16, 8 июля 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Библиотека 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, но имеет собственные ограничения.
Функции
- Класс SoftwareSerial
- available()
- begin()
- isListening()
- overflow()
- peek()
- read()
- print()
- println()
- listen()
- write()
Библиотека Software Serial
- Software Serial Example - Объясняет, как использовать библиотеку SoftwareSerial... потому что иногда одного последовательного порта просто недостаточно.
- Two Port Receive - Как работать с несколькими портами типа Software Serial.