Softwareserial
Введение
SoftwareSerial использует прерывания и тщательно синхронизированные последовательности для обеспечения последовательной связи aynsc на портах, отличных от поддерживаемых аппаратным последовательным портом (класс HardwareSerial).
Вы не должны не использовать SoftwareSerial, если HardwareSerial доступен на тех же контактах. Аппаратный COM порт более надежен и может отправлять и получать в фоновом режиме. SoftwareSerial не может.
Поддерживаемые пины
На Arduino на базе Atmega328P (например, Uno, Pro, Nano, Mini) вы можете использовать SoftwareSerial для любых контактов.
На Mega2560 вы можете использовать его только для приема контактов 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 вы можете использовать его только для приема контактов 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
Это связано с тем, что SoftwareSerial требует прерывания по смене контакта для обнаружения приема нового байта, а прерывания по смене контакта поддерживаются только на контактах, упомянутых выше. Вам не нужны прерывания по смене контакта для передачи, поэтому вы можете выбрать любой контакт для передачи.
Ограничения
По причинам синхронизации SoftwareSerial отключает прерывания после начала приема байта (до тех пор, пока он не будет получен полностью). Он также отключает прерывания при отправке.
Поэтому вы не можете одновременно отправлять и получать с помощью SoftwareSerial.
SoftwareSerial работает только с 8-битными байтами. HardwareSerial может читать и записывать от 5 до 9 бит.
SoftwareSerial только читает/записывает без контроля четности и с одним стоповым битом. HardwareSerial может записывать без четности/четности/нечетности и использовать один или два стоповых бита.
Поскольку прерывания отключены во время отправки и получения, вы не можете выполнять столько фоновой обработки при отправке/получении.
Улучшения
- SoftwareSerial имеет режим "инвертированной логики" в конструкторе, который позволяет читать/записывать с инвертированной нормальной логикой. То есть +5 В – это 0 бит, а 0 В – 1 бит.
Полезность
SoftwareSerial удобно использовать в тех случаях, когда требуется одновременный доступ к нескольким последовательным устройствам, таким как GPS и принтер.
Альтернативы
На Mega2560 у вас есть четыре аппаратных последовательных порта, поэтому вы можете использовать их вместо SoftwareSerial.
Есть еще одна библиотека: AltSoftSerial Library. Это снимает некоторые из указанных выше ограничений и добавляет некоторые собственные.
Ссылка
- Библиотека SoftwareSerial
Вопросы, связанные с [softwareserial]:
- Лазерный излучатель + приемник для ардуино (Arduino to Arduino communication) Я работаю над проектом, используя два ардуино, подключенные к двум компьютерам для демонстрации последовательной связи. Мы используем Arduino Uno, подключенный к компьютеру через Serial и…
- Взаимодействие A9G с Arduino для тестирования AT-команд Я пытаюсь подключиться к плате A9G Pudding GSM через Arduino. Я намерен использовать встроенный чип UART для упрощения преобразования TTL-UART между ПК и A9G. Я инициировал программный…
- Последовательная связь с HC-05 - Arduino UNO Я новичок на сайте, и это мой первый вопрос. Я постараюсь описать свою проблему как можно лучше. Я получил следующий код для своего проекта, который в основном состоит в том, чтобы заставить…
- Как работает последовательная связь на Arduino? Относительно плат Arduino Uno, Mega2560, Leonardo и аналогичных: Как работает последовательная связь? Насколько быстр последовательный порт? Как установить связь между отправителем и…
- Связь Bluetooth не работает с питанием от постоянного тока, но работает с питанием от USB? Я использую модуль Bluetooth HM-10 с низким энергопотреблением (BLE) для передачи последовательных данных (с использованием программного обеспечения) с аналогового датчика на борту моего Arduino Uno…
- Нужен ESP32 для использования 3 последовательных портов У меня есть проект, для которого требуется 3 последовательных порта на моем 38-контактном микроконтроллере ESP32 Dev. Два из них предназначены для сенсорных дисплеев Nextion, а другой — для GPS.…
- Как заставить сервоприводы не отключать питание Arduino и источника питания? У меня возникла проблема с проектом, в котором один сервопривод сбрасывает (выключает) два Arduino Pro Mini, работающих с напряжением 3,3 В/8 МГц. Два Arduino соединены через SoftwareSerial на…
- чтение свойств устройства или платы с устройства Arduino MKR WiFi 1010 Как программно прочитать специфические свойства устройства с чипа или платы Arduino MKR WiFi 1010? Например, следующие свойства устройства: любой идентификационный номер, который может…
- ATtiny85 со сном и последовательным портом Я хочу подключиться по последовательному порту к другому устройству (dfplayer), а также перевести микроконтроллер в спящий режим. У ATtiny85 нет аппаратного последовательного порта, поэтому мне…
- Ответ GSM-модуля sim800l не завершен Я использую sim800l GSM-модуль с nodemcu esp8266 и общаюсь с ним с помощью команд AT+. Модуль работает правильно, но я пытаюсь использовать команду AT+CLCC , чтобы получить состояние всех…
- HardwareSerial и SoftwareSerial несовместимы. HardwareSerial требует запуска прерывания для сохранения полученных байтов в буфере. Посмотрите этот файл из ядра Arduino. Если я теперь постоянно получаю и записываю в Software Serial, данные из…
- Потерянные данные SoftwareSerial и HardwareSerial Мне нужны два последовательных порта. Один порт представляет собой своего рода модифицированный последовательный порт программного обеспечения, где мне приходится постоянно прослушивать и немедленно…
- Arduino не может прочитать 0x41 и 0x42 (отлично читает другие (приемник банкнот ICT) Вот моя проблема: Мой код успешно распознает и принимает купюры в 1 доллар (0x40) и 20 долларов (0x43), но ему не удается распознать, отобразить и обработать что-либо для купюр в 5 долларов (0x41)…
- Почему управление мощностью с помощью транзистора мешает последовательной связи MHZ19B? Я пытался отключить MHZ19B (datasheet и teardown фото: revspace.nl/MH-Z19B ). Я использовал Arduino, NPN, PNP транзисторы и МОП-транзисторы, а также схему ниже для подключения датчика к ESP32. Во…
- Функция отправки VirtualWire Я немного не понимаю, как именно работает функция отправки VirtualWire. Посмотрев на код, я понял, что процесс выглядит следующим образом. В Arduino IDE вызовите vw_send() с правильными…
- SIM800L не отвечает на AT-команды Я использую модуль SIM800L для модуля . Я новичок в GSM-модулях, поэтому я искал базовое для использования GSM с Arduino. это мой код. #include <SoftwareSerial.h> SoftwareSerial…
- Как заставить Arduino печатать на Arduino IDE моего Mac через Bluetooth? Это простой вопрос, но я действительно изо всех сил пытался найти решение в Интернете, но безрезультатно. У меня довольно обычная установка. Модуль HC05, подключенный к Arduino. HC05 также…
- Неправильные данные, полученные при последовательной связи У меня есть две Arduino UNO , соединенные двумя проводами и землей, которые обмениваются информацией через последовательные данные. Связь работает с INT, но у меня возникают проблемы с получением…
- Последовательная связь от Arduino до ESP8266 NodeMCU работает, но от NodeMCU до Arduino не работает Мое подключение цепи выглядит следующим образом: (Я следую этому учебнику ) Код, загруженный в Arduino: #include <SoftwareSerial.h> #include <ArduinoJson.h> SoftwareSerial s(5…
- Я получаю неправильное сообщение при отправке сообщения между двумя ардуино То, что я пытаюсь сделать, довольно просто Я хочу закодировать флаг и числовое значение в сообщение и передать его другому Arduino с помощью HC-05. Я получаю числовое значение на другом конце…
- Использование SoftwareSerial вместе с библиотекой FastLED для управления светодиодами WS2812 Я управляю светодиодами WS2812 с помощью Arduino nano, используя библиотеку FastLED . Я хочу, чтобы шаблоны светодиодов менялись при получении команды от другого Arduino Nano через Software…
- Проблема со связью с ESP32 (WT32-S1) с моим USB FTDI (hw-417-v1.2) В основном я пытаюсь установить связь между моим ESP32 (WT32-S1) и моим USB FTDI (hw-417-v1.2), когда я запускаю его в Arduino IDE, я получаю сообщение об ошибке " Failed для подключения к ESP32:…
- Не удается связаться с серийным номером программного обеспечения на определенных устройствах (SIM7600G-H) У меня есть 3 устройства: UNO (неподлинный) SMS шляпа/щит устройство SIM7600G-H для связи через UART А USB UART контроллер для целей отладки Я использую UNO…
- Проблема с Software Serial: нет ответа Я использую плату Arduino Uno с IDE 1.6.7. Я попытался реализовать измененную версию базового примера (пример SoftwareSerial ) из библиотеки Software Serial. Код прилагается. Он должен мигать…
- SoftwareSerial не будет читать всю напечатанную строку при вызове readString() У меня есть Arduino UNO и ESP32, которые должны взаимодействовать друг с другом с помощью SoftwareSerial. Проблема, с которой я сталкиваюсь, заключается в том, что когда я вызываю readString и…
- vk2828u7g5lf GPS модуль над SoftwareSerial Так что моя цель была проста. Попытка получить скорость GPS и показать ее на дисплее (позже используйте ее для управления шаговым двигателем). Я использую GPS-модуль vk2828u7g5lf от Banggood,…
- Как Arduino будет общаться по беспроводной сети через XBee? Я использую один XBee S2, настроенный как координатор API, подключенный к моему ноутбуку, и один XBee S2, подключенный к Arduino Uno, который настроен как маршрутизатор AT. Я хочу сгенерировать…
- Использование Arduino для чтения и записи данных на устройство RS232 У меня есть турбореактивный микродвигатель (JetCat P100-RX), который управляется электронным блоком управления (ЭБУ). ЭБУ содержит много информации о двигателе. Я хочу получить доступ к этой…
- Дата и время GPS не отображаются правильно в Arduino Uno,NEO6M GPS модуль Я изучаю, как работает модуль Arduino и GPS, чтобы я мог применить его к другому проекту. Мои компоненты-Arduino Uno, GPS-модуль NEO-6M и TFT-дисплей Adafruit 1.8". Код работал не так, как…
- Отправить массив 2d PROGMEM через SoftwareSerial У меня есть двумерный массив: const byte messages_for_measurement[2][8] PROGMEM = { { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }, { 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10 }…
- Термопринтер Adafruit печатает слабо В настоящее время я подключаю свою Arduino к мини-термопринтеру adafruit. При нажатии кнопки выполняется некоторый код, который затем отправляет некоторую информацию на термопринтер. Все работает…
- Как читать и анализировать данные UART с радарного датчика присутствия человека Я работаю над проектом и купил 24 ГГц "Человеческое существование/присутствие" мм Волновой датчик от micradar, R24DVD1. Выход модуля представляет собой последовательные данные различной длины и…
- MP3-TF-16P работает только при подключении к последовательному монитору Собираю проект с Arduino Nano и компонентом в теме, который, насколько я понимаю, можно уподобить DFPlayerMini (не уверен, что это одно и то же или это просто дешевая подделка). Следуя одному из…
- Последовательная связь между nodemcu и Arduino Uno В последние дни я пытаюсь установить последовательную связь между nodemcu и Arduino Uno, но мне это не удалось. В настоящее время я работаю над проектом домашней автоматизации. Я получаю данные от…
- Использовать один и тот же пин для двух целей У меня есть только один доступный контакт, и мне нужно использовать его как для цифрового чтения, так и для отправки последовательных сообщений (назначив ему роль Tx в SoftwareSerial). Я могу…
- Нет данных GPS Neo 6M DFRduino Nano Я проверил несколько ответов на один и тот же вопрос, но ни один из них не помог. Я также заменил наноплату и модуль GPS, но безуспешно. Я запускал его на открытом воздухе. Этот вопрос в…
- Штрих код не вошел в систему SD карта UART После долгих попыток целый месяц.. глядя как новичок , я не успел зарегистрировать результат сканера штрих-кодов, используя модуль rtc SD и сканер waveshare, подключенный через UART к портам 2 и 3…
- Получить данные с сайта с помощью ESP8266 с помощью AT-команд Я пытаюсь получить данные с сайта, отправив HTTP-запрос GET через AT-команды для ESP8266. Вот мой текущий код: #include <SoftwareSerial.h> const byte rxPin = 2; const byte txPin =…
- Как читать и записывать на устройство rs232 с/на Arduino Я хотел бы считывать данные с устройства rs232 (измеритель уровня звука SL-5868P). протокол и многое другое : https://sigrok.org/wiki/Colead_SL-5868P . У меня уже есть скрипт Python для чтения…
- Проблема последовательной связи с общей землей SIM800L У меня возникла проблема, когда я использую модуль SIM800L с общим заземлением в сочетании с: FTDI232+ARDUINO PRO и аккумулятором Li-po. Я использую общий язык, чтобы Arduino мог видеть…
- Как очистить значения SoftwareSerial? Я использую software serial на своей метеостанции. Предполагается, что это работает следующим образом: вы отправляете SMS на устройство, а оно отвечает скоростью ветра и т. д. На данный…
- Можно ли использовать SoftwareSerial в ESP01 Я использую ESP01 в качестве микроконтроллера, который извлекает информацию из Firebase и отправляет их по последовательному каналу в Arduino Uno для других целей. Я не использую NodeMCU, так как у…
- Отладка RN 42 HID Mouse Я пытаюсь использовать RN 42 и Arduino Uno для управления мышью Bluetooth. Я настроил RN 42 с помощью команд S ~, 6 и SH, 0220 и R, 1, чтобы перевести устройство в режим скрытой мыши. Есть ли…
- Использование software serial на Arduino Mega Итак, я использую этот датчик: https://wiki.dfrobot.com/Serial_6_Axis_Accelerometer_SKU_SEN0386 с этой библиотекой https://github.com/DFRobotdl/DFRobot_WT61PC Я использую 2 датчика, но у меня…
- Библиотека RDM6300 не работает на ESP8266 У меня есть RFID-модуль RDM6300, который я пытаюсь подключить к ESP8266 с помощью библиотеки rdm6300.h . У меня все это работало вместе с другими компонентами, но мы подключились к ESP8266, но…
- Использование Arduino в качестве ISP и программного обеспечения одновременно Я пытаюсь использовать свой Arduino Uno в качестве ISP для программирования ATtiny85 и в то же время проверить плату, используя библиотеку SoftwareSerial для вывода значений, которые я получаю от…
- Странное поведение SoftwareSerial с Arduino nano при настройке нескольких объектов SoftwareSerial Так что я застрял с этим уже несколько дней и действительно не могу понять, что здесь не так. Любая помощь была бы очень кстати. Старайтесь не перечислять недостатки SoftwareSerial, я о них знаю.…
- Альтернатива SoftwareSerial с низким объемом памяти? Я запускаю программу на ATtiny85 и сталкиваюсь с проблемами из-за нехватки доступной оперативной памяти. Когда я запустил avr-nm в своем файле ELF, я обнаружил, что SoftwareSerial занимает много…
- GSM входящие байты от UART не завершены Я использовал команды AT для считывания входящих байтов из последовательного буфера с SIM900A, но я не могу получить полное сообщение, используя приведенный ниже код: while(ss…
- Возможно ли использование двух модулей с последовательным интерфейсом на одном Arduino Uno? Мне было интересно, есть ли у меня модуль Bluetooth HC-05 и модуль GPS (uBlox 7N). Возможно ли, чтобы оба они использовали последовательный интерфейс? Я в курсе, что они не могут работать…