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

Arduino:Примеры/MultiSerialMega

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

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

Контакты:

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


Работа с несколькими последовательными портами на Arduino Mega [1]

Иногда одного последовательного порта бывает просто недостаточно. Поэтому, если вы работаете сразу с несколькими устройствами, попутно передавая информацию обратно на Serial Monitor, то пара дополнительных RX/TX портов может прийтись весьма кстати. В данном примере мы воспользуемся одним из трех вспомогательных последовательных портов платы Arduino, перенаправляя все входящие данные сразу к главной TX-линии, а затем и на Serial Monitor.

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

  • Плата Arduino Mega;
  • Одно устройство, умеющее работать с последовательной передачей данных (подойдет Xbee Radio, модуль Bluetooth, RFID-ридер или еще одна Arduino);

Цепь

Для начала ознакомьтесь с техническими данными устройства, которым вы решили воспользоваться в этом примере. Затем убедитесь, что оно правильно подключено и запитано. RX и TX контакты устройства подсоедините к RX и TX контактам Arduino, как показано на схеме ниже. Также убедитесь, что Mega через USB подключена к компьютеру – чтобы можно было запустить последовательную передачу данных.

MEGA bb.png

Схема

MultiSerialMega schem.png

Код

  1. /*
  2.   Работа с несколькими последовательными портами на Arduino Mega
  3.  
  4.  Получает данные от главного последовательного порта, а затем отправляет их к другим. Получает данные от 1-ого последовательного порта, а затем отправляет их на главный (Serial 0) последовательный порт.
  5.  Этот пример работает только с Arduino Mega
  6.  Цепь:
  7.  * любое устройство, умеющее работать с последовательной передачей данных и подсоединенное к 1-ому последовательному порту
  8.  * окно Serial Monitor открыто на 0-ом последовательном порте
  9.  
  10.  Создан 30 декабря 2008 года,
  11.  модифицирован 20 мая 2012
  12.  Томом Иго (Tom Igoe) и Джедом Роучем (Jed Roach).
  13.  
  14.  Этот код не защищен авторским правом.
  15.  
  16.  */
  17.  
  18.  
  19. void setup() {
  20.   // инициализируем последовательную передачу данных на обоих последовательных портах:
  21.   Serial.begin(9600);
  22.   Serial1.begin(9600);
  23. }
  24.  
  25. void loop() {
  26.   // считываем данные на 1-ом порте, пересылаем на 0-ой порт:
  27.   if (Serial1.available()) {
  28.     int inByte = Serial1.read();
  29.     Serial.write(inByte);
  30.   }
  31.  
  32.   // считываем на 0-ом порте, пересылаем на 1-ый порт:
  33.   if (Serial.available()) {
  34.     int inByte = Serial.read();
  35.     Serial1.write(inByte);
  36.   }
  37. }

См.также

  1. serial.begin()
  2. serial.read()
  3. serial.available()
  4. if()
  5. The Arduino Serial Library
  6. DigitalReadSerial
  7. AnalogReadSerial
  8. Serial Call Response
  9. Serial Call and Response ASCII
  10. If Statement

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

  1. Arduino - MultiSerialMega