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

Arduino:Примеры/Эхо данных последовательного порта

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

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


Ambox content.png Черновик


Эхо данных последовательного порта

Данный пример демонстрирует вывод данных,отправляемых через последовательный порт с помощью монитора порта.

При приеме данных по последовательному соединению, Arduino помещает данные в буфер. Отправив несколько байт данных через последовательный порт на Arduino, Arduino поставит их в очередь и обработает их согласно алгоритму программы. Отправка слишком большого объема данных может привести к переполнению буфера и потери данных.

В данном примере для работы с последовательным портом используются 4 функции:

  • Serial.begin() - инициализирует последовательное соединение;
  • Serial.available() - возвращает число символов(байтов), которые в данный момент находятся в буфере Arduino.
  • Serial.read() - считывает и возвращает следующий символ из буфера.
  • Serial.print - вывод данных в последовательный порт.

При вызове функции Serial.read(), она возвратит только один байт из буфера, поэтому ее вызов мы будем повторять до тех пор пока вызов Serial.available() возвращает ненулевое значение.

Загрузите скетч в Arduino и запустите монитор последовательного порта. Напечатайте что-нибудь в поле ввода текста и нажмите "Отправить". Все что вы набрали вернется назад в компьютер и отобразится в окне монитора последовательного порта.

Если в окне монитора порта, в раскрывающемся списке вы выбрали опцию "NL (Новая строка)", то к концу строки, которую вы отправляете на Arduino, автоматически будет добавляться символ перевода строки "\n". Поэтому даже используя Serial.print вместо Serial.println каждый ответ будет отображаться с новой строки.

Необходимые компоненты

Монтажная схема

Для данного примера не нужно собирать схему.

ArduinoUNO bb 1.png

Код

  1. char data;                        // хранит текущий входящий символ
  2.  
  3. void setup()
  4. {
  5.   Serial.begin(9600);             // инициализация последовательного соединения на скорости 9600 бод
  6. }
  7.  
  8. void loop()
  9. {
  10.   // Вывод только при получении данных
  11.   if (Serial.available() > 0)
  12.   {
  13.     data = Serial.read();        // читаем байт из буфера
  14.     Serial.print(data);          // выводим байт в последовательный порт
  15.   }
  16. }

См.также

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