Приветствую Вас ГостьПятница, 03.05.2024, 14:21

AVR & ARDUINO




Каталог статей

Главная » Статьи » Справочник

Библиотека SoftwareSerial

В Arduino реализована аппаратная поддержка интерфейса последовательной передачи данных через контакты 0 и 1 (которые также используются для связи с компьютером посредством USB). Аппаратная работа с последовательным интерфейсом осуществляется с помощью встроенного в микроконтроллер специального устройства, называемого приемопередатчиком UART. Он позволяет микроконтроллеру Atmega обрабатывать поступающие данные даже во время работы над другими задачами.

Библиотека SoftwareSerial позволяет реализовать последовательный интерфейс на любых цифровых контактах Arduino с помощью программных средств, дублирующих функциональность UART (отсюда и название "SoftwareSerial"). Библиотека позволяет программно создавать несколько последовательных портов, работающих на скорости до 115200 бод. Для устройств, работающих с инвертированным сигналом, в библиотеке предусмотрен соответствующий параметр, включающий инвертирование.

Начиная с версии 1.0, SoftwareSerial основывается на библиотеке NewSoftSerial автора Mikal Hart.

Ограничения

 Библиотека SoftwareSerial имеет ряд ограничений:

  • При использовании нескольких последовательных портов, в каждый момент времени только один из них может получать данные.
  • На платах Arduino 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).
  • На Arduino Leonardo некоторые контакты не поддерживают прерывания, возникающие при изменении уровня сигнала. Поэтому, на этой плате в качестве контакта RX могут использоваться только следующие выводы: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

Если ваш проект требует одновременных потоков данных посмотрите библиотеку Пола Стоффрегена AltSoftSerial. Библиотека AltSoftSerial преодолевает некоторые вопросы присущие SoftwareSerial, но имеет свои ограничения.

Пример


/*
 Программа тестирования последовательных портов, создаваемых с помощью 
 библиотеки SoftwareSerial
 
 Данные, получаемые аппаратным портом, отправляются на программный порт.
 Данные, получаемые программным портом, отправляются на аппаратный порт.
 
 Схема: 
 * RX - цифровой контакт 10 (необходимо соединить с контактом TX другого устройства)
 * TX - цифровой контакт 11 (необходимо соединить с контактом RX другого устройства)
 
 Примечания:
 На платах Arduino 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).
 
 
 На Arduino Leonardo некоторые контакты не поддерживают прерывания, возникающие при 
 изменении уровня сигнала. Поэтому, на этой плате в качестве контакта RX могут 
 использоваться только следующие выводы: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI). 
 
 дата создания не известна
 модифицировано 25 мая 2012
 Автор: Tom Igoe
 на основе примера Mikal Hart
 
 Данный код открыт для использования.
 
 */
#include <softwareserial.h>
 
SoftwareSerial mySerial(10, 11); // RX, TX
 
void setup() 
{
 // Инициализируем последовательный интерфейс и ждем открытия порта:
 Serial.begin(57600);
 while (!Serial) {
 ; // ожидаем подключения к последовательному порту. Необходимо только для Leonardo
 }
 
 
 Serial.println("Goodnight moon!");
 
 // устанавливаем скорость передачи данных для последовательного порта, созданного 
 // библиотекой SoftwareSerial
 mySerial.begin(4800);
 mySerial.println("Hello, world?");
}
 
void loop() // выполняется циклически
{
 if (mySerial.available())
 Serial.write(mySerial.read());
 if (Serial.available())
 mySerial.write(Serial.read());
}

Методы

SoftwareSerial()

available()

begin()

isListening()

overflow()

peek()

read()

print()

println()

listen()

write()


Справочник

Материалы взяты с официального сайта проекта Arduino и представлены по лицензии Creative Commons Attribution-ShareAlike 3.0 License.



Источник: http://arduino.cc/en/Reference/SoftwareSerial
Категория: Справочник | Добавил: magi (21.02.2015)
Просмотров: 7431 | Теги: SoftwareSerial, UART, serial, arduino | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Поиск
Вход на сайт
На правах рекламы

Мы переезжаем на сайт Arduino по-русски