Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/SoftwareSerialExample

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

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


Пример работы с библиотекой Software Serial[1]

Платы Arduino имеют встроенную поддержку для последовательной передачи данных (на 0-ом и 1-ом контактах), но что если вам нужно больше последовательных портов? Как раз для этого случая была разработана библиотека SoftwareSerial, которая позволяет организовать последовательную передачу данных через другие цифровые контакты – при помощи ПО, которое копирует функционал «намертво» запрограммированных линий RX и TX. Эта библиотека может оказаться крайне полезна, когда вам надо настроить последовательную передачу данных сразу с двумя девайсами, либо с одним, но так, чтобы один из последовательных портов был отведен под отладку.

В примере ниже в качестве виртуальных RX- и TX-линий выступят цифровые контакты номер 10 и 11. Скетч будет настроен таким образом, чтобы прослушивать все, что идет через главный последовательный порт, а затем отражать это на виртуальной TX-линии. И наоборот, все, что будет получено на виртуальном RX, в дальнейшем будет отправлено через аппаратный TX.

Необходимое оборудование

  • Плата Arduino;

Цепь

Для этого примера цепи строить не нужно. Только убедитесь, что Arduino подключена к компьютеру через USB, чтобы иметь возможность запустить последовательную коммуникацию.

Arduino bb.png

Код

  1. /*
  2. Тест c передачей данных посредством Software Serial (вариация 1)
  3.  
  4. Получает данные по аппаратной линии, отправляет на виртуальную.
  5. Получает данные по виртуальной линии, отправляет на аппаратную.
  6.  
  7. Цепь:
  8. * RX – это 10-ый цифровой контакт (подключен к TX другого девайса)
  9. * TX – это 11-ый цифровой контакт (подключен к RX другого девайса)
  10.  
  11. Примечание:
  12. Не все контакты Mega и Mega 2560 поддерживают «перепрошивку»,
  13. поэтому для RX можно использовать только эти:
  14. 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69
  15.  
  16. Также не все контакты Leonardo поддерживают «перепрошивку»,
  17. поэтому для RX можно использовать только эти:
  18. 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
  19.  
  20. Создан давным-давно, в далекой-далекой галактике,
  21. модифицирован 25 мая 2012 Томом Иго (Tom Igoe),
  22. основан на примере Микала Харта (Mikal Hart).
  23.  
  24. Этот код не защищен авторским правом.
  25.  
  26. */
  27. #include <SoftwareSerial.h>
  28.  
  29. SoftwareSerial mySerial(10, 11); // виртуальные контакты RX и TX
  30.  
  31. void setup()  
  32. {
  33.   // Запускаем последовательную передачу данных и ждем открытия порта:
  34.   Serial.begin(57600);
  35.   while (!Serial) {
  36.     ; // ждем подключения последовательного порта (нужно только для Leonardo)
  37.   }
  38.  
  39.  
  40.   Serial.println("Goodnight moon!");  //  "Спокойной ночи!"
  41.  
  42.   // Задаем скорость для передачи данных через порт SoftwareSerial:
  43.   mySerial.begin(4800);
  44.   mySerial.println("Hello, world?");  //  "Эм... привет, мир?"
  45. }
  46.  
  47. void loop() // Запускаем снова и снова:
  48. {
  49.   if (mySerial.available())
  50.     Serial.write(mySerial.read());
  51.   if (Serial.available())
  52.     mySerial.write(Serial.read());
  53. }

См.также

  1. The Software Serial Library
  2. MultiSerialMega: use two of the serial ports available on the Arduino Mega.
  3. Serial Call Response: send multiple vairables using a call-and-response (handshaking) method.
  4. Serial Call Response ASCII: send multiple variables using a call-and-response (handshaking) method, and ASCII-encode the values before sending.

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

  1. Arduino - Software Serial Example