Serial begin arduino описание

Содержание

Arduino

Serial

Библиотека Serial содержит набор функции для работы с последовательным портом Arduino.

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

В таблице ниже представлены данные по последовательным портам основных плат Arduino:

Плата Пины сериального порта 1 Пины сериального порта 2 Пины сериального порта 3 Пины сериального порта 4
Uno 0(RX), 1(TX)
Nano 0(RX), 1(TX)
Mini 0(RX), 1(TX)
Mega 0(RX), 1(TX) 19(RX), 18(TX) 17(RX), 16(TX) 15(RX), 14(TX)
Due 0(RX), 1(TX) 19(RX), 18(TX) 17(RX), 16(TX) 15(RX), 14(TX)

TX — пин передачи данных, RX — пин получения данных.

Для соединения двух устройств, необходимо подключить пин TX первого устройство к пину RX второго, а пин RX первого — к пину TX второго соответственно.

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

Среду разработки Arduino IDE и PlatformIO имеют встроенный монитор порта Serial , главное — не забыть выставить одинаковую скорость на Arduino через функцию begin() и в IDE.

Функции библиотеки Serial

Функция Serial.begin()

Описание

Инициирует последовательное соединение, а также задает скорость передачи данных. Скорость измеряется в бит/с (бод). Для обмена данных с компьютером через USB используются значения из следующего списка: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 и 115200. При подключении двух устройств через пины RX и TX, могут использоваться любые другие значения.

Синтаксис

Serial.begin(speed)
Serial.begin(speed, config)

Параметры

speed — скорость передачи данных

config — необязательный параметр, устанавливает данные, четность и стоповые биты

Возвращаемое значение
Пример

Функция Serial.end()

Описание

Закрывает последовательное соединение, позволяя использовать пины RX и TX для обычного использования.

Чтобы снова включить последовательное соединение, используйте функцию begin() .

Источник

Arduino библиотека Serial

Библиотека Serial — это стандартная библиотека, которая подключается в скетчи автоматически. Она используется для передачи данных через последовательный порт Arduino. В большинстве плат ардуино доступен 1 интерфейс Serial. Последовательный порт работает с двумя цифровыми пинами Ардуино 0-ой (RX) и 1-ый (TX). В Arduino Mega таких интерфейсов 3. Для доступа к интерфейсу связи необходимо использовать ключевой слово Serial (Serial1 и Serial2 для Arduino Mega).

Теперь рассмотрим доступные функции библиотеки Serial:

if(Serial)

Условие с проверкой готовности порта к работе. Используется такая конструкция довольно редко, потому что обычно интерфейс доступен.

available()

Проверяет число байтов доступных для считывания. Данная функция показывает какое количество данных уже пришло и хранится в буфере обмена. Размер буфера последовательного порта 64 байта.

Синтаксис

Параметры

Возвращаемые значения

Число байт доступных для чтения

availableForWrite()

Проверяет число байтов доступных для записи в буфер обмена, без блокировки функции записи.

Синтаксис

Параметры

Возвращаемые значения

Число байт доступных для записи

begin()

Данная функция устанавливает соединение на определенной скорости.

Синтаксис

Параметры

speed — Обязательный параметр. Скорость бит в секунду (бод). Доступные значения: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 или 115200

config — Необязательный параметр. Задает биты данных, биты четности и стоп-биты. Доступные значения: SERIAL_5N1, SERIAL_6N1, SERIAL_7N1, SERIAL_8N1 (это значение задано по умолчанию), SERIAL_5N2, SERIAL_6N2, SERIAL_7N2, SERIAL_8N2, SERIAL_5E1, SERIAL_6E1, SERIAL_7E1, SERIAL_8E1, SERIAL_5E2, SERIAL_6E2, SERIAL_7E2, SERIAL_8E2, SERIAL_5O1, SERIAL_6O1, SERIAL_7O1, SERIAL_8O1, SERIAL_5O2, SERIAL_6O2, SERIAL_7O2, SERIAL_8O2

Возвращаемые значения

Отключает соединение через последовательный порт и освобождает пины RX и TX.

Синтаксис

Параметры

Возвращаемые значения

Считывает данные из буфера обмена до тех пор пока не найдет заданную строку.

Синтаксис

Параметры

needle — Обязательный параметр. Строка которую нужно найти

Возвращаемые значения

true — Если строка найдена.

false — Если строка не найдена.

findUntil()

Считывает данные из буфера обмена до тех пор пока не найдет заданную строку или терминальную строку.

Синтаксис

Параметры

needle — Обязательный параметр. Строка которую нужно найти

terminal — Обязательный параметр. Терминальная строка которую нужно найти

Возвращаемые значения

true — Если строка найдена.

false — Если строка не найдена.

flush()

Очищает буфер обмена последовательного порта

Синтаксис

Параметры

Возвращаемые значения

parseFloat()

Возвращает первое найденное в буфере обмена число с плавающей точкой. Все остальные символы игнорируются.

Синтаксис

Параметры

Возвращаемые значения

Число с плавающей точкой (float)

parseInt()

Возвращает первое найденное в буфере обмена целое число. Все остальные символы игнорируются.

Синтаксис

Параметры

skipChar — необязательный параметр. Символ который будет пропускаться при поиске

Возвращаемые значения

Целое число (long) или 0, если не найдено цифр.

Возвращает первый байт данных из буфера.

Синтаксис

Параметры

Возвращаемые значения

Первый байт входящих последовательных данных (int). Если данных нет то вернет «-1»

print()

Функция отправляет данные в последовательный порт в виде ASCII-текста.

Синтаксис

Параметры

val — обязательный параметр. Данные, которые необходимо отправить.

format — Необязательный параметр. Форматирует отправляемые данные. Может принимать следующие значения: BIN — Двоичный формат. OCT — Восьмеричный формат. DEC — Десятичный формат HEX — Шестнадцатиричный формат. 0 — Округление числа до целых. 2 — Округление число до сотых.

Возвращаемые значения

Количество записанных байтов (long)

println()

Отправляет данные в виде ASCII-текста в последовательный порт с символом конца строки (\r) и символом новой строки (\n)

Синтаксис

Параметры

val — обязательный параметр. Данные, которые необходимо отправить.

format — Необязательный параметр. Форматирует отправляемые данные. Может принимать следующие значения: BIN — Двоичный формат. OCT — Восьмеричный формат. DEC — Десятичный формат HEX — Шестнадцатиричный формат. 0 — Округление числа до целых. 2 — Округление число до сотых.

Возвращаемые значения

Количество записанных байтов (long)

Считывает данные из последовательного порта.

Синтаксис

Параметры

Возвращаемые значения

Первый доступный байт (int).

readBytes()

Считывает символы из последовательного порта в буфер. Завершает свою работу, если сосчитает данные заданной длины или если выйдет время. Время указывается при помощи функции serial.setTimeout().

Возвращаемое значение — количество символов, помещенных в буфер. Если функция вернет значение «0», это значит, что нужных данных найдено не было.

Синтаксис

Параметры

buffer — буфер, в который будут сохраняться входящие байты (char[] или byte[])

length — количество считанных байтов (int)

Возвращаемые значения

readBytesUntil()

Считывает символы из буфера последовательного порта в массив. Завершает свою работу, если обнаружит терминальный символ, если сосчитает данные заданной длины или если выйдет время. Время указывается с помощью функции Serial.setTimeout().

Синтаксис

Параметры

character — символ, который нужно найти (char)

buffer — буфер, в который будут сохранены входящие байты (char[] или byte[])

length — количество байтов, которые нужно сосчитать (int)

Возвращаемые значения

readString()

Считывает данные из буфера последовательного порта в строку. Завершает свою работу, если выйдет время. Время указывается в функции Serial.setTimeout().

Синтаксис

Параметры

Возвращаемые значения

Строка с данными, считанными из буфера последовательного порта.

readStringUntil()

Считывает символы из буфера последовательного порта в строку. Завершает свою работу, если наткнется на терминальный символ или если выйдет время. Время указывается в функции Serial.setTimeout().

Синтаксис

Параметры

terminalChar— искомый символ (char)

Возвращаемые значения

Строка, считанная из буфера последовательного порта (до символа, завершающего работу функции).

setTimeout()

Устанавливает время (в миллисекундах), в течение которого функции Serial.readBytesUntil(), Serial.readBytes(), Serial.parseInt() и Serial.parseFloat() должны будут ждать данных, входящих через последовательный порт.

Синтаксис

Параметры

time — время ожидания в миллисекундах (long).

Возвращаемые значения

write()

Передает через последовательный порт данные в двоичном виде. Данные передаются как байт или как серия байтов. Если вам нужно отправить символы, представляющие цифры какого-либо числа, используйте функцию print().

Синтаксис

Параметры

val — значение, строка или буфер для отправки.

len — размер буфера

Возвращаемые значения

Байт или количество отправленных байтов

serialEvent

Автоматически вызывается, когда есть доступные данные. Для захвата этих данных нужно воспользоваться функцией Serial.read().

Синтаксис

Параметры

statements — любые корректные функции, позволяющие делать что-то с поступившими данными.

Железо

Это расширенный стартовый набор. В комплект входит Arduino Mega R3, макетные платы, множество датчиков, управляемые механизмы и необходимые радиоэлектронные компоненты. Полный список.

Arduino Uno — плата на базе микроконтроллера ATmega328P с частотой 16 МГц. На плате есть все необходимое для удобной и быстрой работы.

Макетная плата на 830 точек и ничего лишнего.

Источник

Монитор порта, отладка

Как мы с вами знаем из урока “Что умеет микроконтроллер“, у многих микроконтроллеров есть интерфейс UART, позволяющий передавать и принимать различные данные. У интерфейса есть два вывода на плате – пины TX и RX. На большинстве Arduino-плат к этим пинам подключен USB-UART преобразователь (расположен на плате), при помощи которого плата может определяться компьютером при подключении USB кабеля и обмениваться с ним информацией. На компьютере создаётся виртуальный COM порт (последовательный порт), к которому можно подключиться при помощи программ-терминалов и принимать-отправлять текстовые данные. Таким же образом кстати работают некоторые принтеры и большинство станков с ЧПУ.

В самой Arduino IDE есть встроенная “консоль” – монитор порта, кнопка с иконкой лупы в правом верхнем углу программы. Нажав на эту кнопку мы откроем сам монитор порта, в котором будут настройки:

Если с отправкой, автопрокруткой, отметками времени и кнопкой очистить вывод всё и так понятно, то конец строки и скорость мы рассмотрим подробнее:

  • Конец строки: тут есть несколько вариантов на выбор, чуть позже вы поймёте, на что они влияют. Лучше поставить нет конца строки, так как это позволит избежать непонятных ошибок на первых этапах знакомства с платформой.
    • Нет конца строки – никаких дополнительных символов в конце введённых символов после нажатия на кнопку отправка или клавишу Enter.
    • NL – символ переноса строки в конце отправленных данных.
    • CR – символ возврата каретки в конце отправленных данных.
    • NL+CR – и то и то.
  • Скорость – тут на выбор нам даётся целый список скоростей, т.к. общение по Serial может осуществляться на разных скоростях, измеряемых в бод (baud), и если скорости приёма и отправки не совпадают – данные будут получены некорректно. По умолчанию скорость стоит 9600, её и оставим.

Объект Serial

Начнём знакомство с одним из самых полезных инструментов Arduino-разработчика – Serial, который идёт в комплекте со стандартными библиотеками. Serial позволяет как просто принимать и отправлять данные через последовательный порт, так и наследует из класса Stream кучу интересных возможностей и фишек, давайте сразу их все рассмотрим, а потом перейдём к конкретным примерам.

Запустить связь по Serial на скорости speed (измеряется в baud, бит в секунду). Скорость можно поставить любую, но есть несколько “стандартных” значений. Список скоростей для монитора порта Arduino IDE:

  • 300
  • 1200
  • 2400
  • 4800
  • 9600 чаще всего используется, можно назвать стандартной
  • 19200
  • 38400
  • 57600
  • 115200 тоже часто встречается
  • 230400
  • 250000
  • 500000
  • 1000000
  • 2000000 – максимальная скорость, не работает на некоторых китайских платах

Источник

RoboCraft

9. Последовательная передача данных

Arduino/Freeduino имеет встроенный контроллер для последовательной передачи данных, который может использоваться как для связи между Arduino/Freeduino устройствами, так и для связи с компьютером. На компьютере соответствующее соединение представлено либо обычным COM-портом (в случае Arduino Single-Sided Serial Board), либо USB COM-портом, который появляется в системе после установки необходимого драйвера.

Связь происходит по цифровым портам 0 и 1, и поэтому Вы не сможете использовать их для цифрового ввода/вывода если используете функции последовательной передачи данных.

Описание:
Устанавливает скорость передачи информации COM порта битах в секунду для последовательной передачи данных. Для того чтобы поддерживать связь с компьютером, используйте одну из этих нормированных скоростей: 300, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600, или 115200. Также Вы можете определить другие скорости при связи с другим микроконтроллером по портам 0 и 1.

Параметры:
скорость_передачи: скорость потока данных в битах в секунду.

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

Возвращаемое значение:
Возвращает значение типа uint8_t (typedef uint8_t byte;) – количество байт, доступных для чтения, в последовательном буфере, или 0, если ничего не доступно.

Описание:
Считывает следующий байт из буфера последовательного порта.

Возвращаемое значение:
Первый доступный байт входящих данных с последовательного порта, или -1 если нет входящих данных.

Описание:
Записывает данные в последовательный порт. Данные посылаются как байт или последовательность байт; для отправки символьной информации следует использовать функцию print().

Параметры:
val: переменная для передачи, как единственный байт
str: строка для передачи, как последовательность байт
buf: массив для передачи, как последовательность байт
len: длина массива

Описание:
Очищает входной буфер последовательного порта. Находящиеся в буфере данные теряются, и дальнейшие вызовы Serial.read() или Serial.available() будут иметь смысл для данных, полученных после вызова Serial.flush().

Функции print наследуются классом HardwareSerial от класса Print (\hardware\cores\arduino\ Print.h)

Описание:
Вывод данных на последовательный порт.

Параметры:
Функция имеет несколько форм вызова в зависимости от типа и формата выводимых данных.

Serial.print(b, DEC); выводит ASCII-строку — десятичное представление числа b.

int b = 79;
Serial.print(b, DEC); //выдаст в порт строку «79»

Serial.print(b, HEX) выводит ASCII-строку — шестнадцатиричное представление числа b.

Serial.print(b, OCT) выводит ASCII-строку — восьмеричное представление числа b.

Serial.print(b, BIN) выводит ASCII-строку — двоичное представление числа b.

Serial.print(b, BYTE) выводит младший байт числа b.

Serial.print(str) если str – строка или массив символов, побайтно передает str на COM-порт.

Serial.print(b) если b имеет тип byte или char, выводит в порт само число b.

Serial.print(b) если b имеет целый тип, выводит в порт десятичное представление числа b.

Описание:
Функция Serial.println аналогична функции Serial.print, и имеет такие же варианты вызова. Единственное отличие заключается в том, что после данных дополнительно выводятся два символа – символ возврата каретки (ASCII 13, или ‘\r‘) и символ новой линии (ASCII 10, или ‘\n‘).
Как нетрудно догадаться, это реализовано простым добавлением вызова функции:

Например, функция вывода символа:

Пример 1 и пример 2 выведут в порт одно и то же:

В мониторе последовательного порта получим:

Источник

Adblock
detector