Arduino:Примеры/MultiSerialMega

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

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


Работа с несколькими последовательными портами на 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 подключена к компьютеру – чтобы можно было запустить последовательную передачу данных.

Схема

Код

/*
  Работа с несколькими последовательными портами на Arduino Mega 
 
 Получает данные от главного последовательного порта, а затем отправляет их к другим. Получает данные от 1-ого последовательного порта, а затем отправляет их на главный (Serial 0) последовательный порт.
 Этот пример работает только с Arduino Mega
 Цепь: 
 * любое устройство, умеющее работать с последовательной передачей данных и подсоединенное к 1-ому последовательному порту
 * окно Serial Monitor открыто на 0-ом последовательном порте
 
 Создан 30 декабря 2008 года,
 модифицирован 20 мая 2012 
 Томом Иго (Tom Igoe) и Джедом Роучем (Jed Roach).
 
 Этот код не защищен авторским правом.
 
 */


void setup() {
  // инициализируем последовательную передачу данных на обоих последовательных портах:
  Serial.begin(9600);
  Serial1.begin(9600);
}

void loop() {
  // считываем данные на 1-ом порте, пересылаем на 0-ой порт:
  if (Serial1.available()) {
    int inByte = Serial1.read();
    Serial.write(inByte); 
  }
  
  // считываем на 0-ом порте, пересылаем на 1-ый порт:
  if (Serial.available()) {
    int inByte = Serial.read();
    Serial1.write(inByte); 
  }
}

См.также

  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

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