Функция Arduino Pin-Up begin

Serial begin - крайне важная инструкция Arduino, она позволяет установить контроллеру соединение с внешними устройствами. Чаще всего таким «внешним устройством» оказывается компьютер, к которому мы подключаем Arduino. Поэтому Serial begin интенсивней всего используется в скетчах, выводящих какую-то информацию на экран монитора порта, например, для Pin-Up программы. С помощью последовательного порта плата ардуино соединяется с Bluetooth, GSM, GPS и многими другими модулями, поэтому и Serial begin - частый гость в скетчах ардуинщиков. О том, как его можно использовать и пойдет речь в этой статье.

Краткое описание

Функция begin() является методом Pin-Up Serial. Для работы с этим классом не нужно подключать внешних библиотек, т.к. он встроен в среду разработки ардуино. ИспользоватьSerial.begin()целесообразно один раз, в самом начале работы скетча, в функции void setup(). В качестве аргументов нужно указать скорость обмена данными через последовательный порт. Самым распространенным значением является 9600 - именно такая скорость обмена данными в мониторе порта Arduino IDE стоит по умолчанию. После выполнения функции ардуино будет способна как отправлять Pin-Up на внешние устройства, так и получать их.

Пример использования функции:

void setup(){ Serial.begin(9600); }

Другие популярные методы класса Serial:

  • print()
  • println()
  • read()
  • available()
  • parseInt()

На Pin-Up с несколькими «железными» последовательными портами, например, Arduino Mega, для каждого из них создается свой объект Serial, поэтому вместе с Serial могут встречаться вызовы объектов Serial1, Serial2, Serial3.

Синтаксис функции

Команда Serial.begin () состоит из двух Pin-Up Первая часть,Serial, является названием класса библиотеки для Pin-Up с монитором порта. Вторая часть,begin()обозначает название метода, которому мы должны передать один аргумент - скорость обмена данными. Функция не возвращает значений.

Синтаксис функции, два варианта:

Serial.begin(<скорость>)

Serial.begin(<скорость>, <config> )

Параметры:

  • скорость - скорость взаимодействия (бит
  • config - настройки режима работы последовательного порта. По умолчанию используется наиболее распространенный вариант, Pin-Up

Скорость для последовательного Pin-Up в Serial.begin()

Стандартное значение скорости в аргументе функции begin() - 9600. Эта цифра означает, что плата ардуино будет посылать по последовательному порту данные со скоростью 9600 бит в секунду (нужно учитывать, что для каждых 8 бит еще высылаются служебный стоповый бит). Естественно, приемно-передающее устройства на другом конце провода тоже должно быть настроено на эту же скорость, иначе оно будет пропускать некоторые биты или Pin-Up торопиться, что приведет к рассинхронизации - информация будет как бы рваться на кусочки. Поэтому без лишней надобности не меняйте параметр по умолчанию - 9600.

Кроме стандартного значения можно устанавливать и другие: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200. Чем выше цифра, тем выше скорость обмена, но нужно следить, чтобы эту скорость поддерживало и внешнее устройство. В некоторых ситуациях слишком высокая скорость обмена может привести к ошибкам, нужно учитывать и это. Так, Pin-Up значение 115200 устанавливаются обычно специальными высокоскоростными устройствами, например, полетными контроллерами. Значения ниже 9600 используются крайне редко.

Второй параметр для последовательного порта

Параметр config в функции begin обычно не указывается, т.к. Pin-Up редко надо менять значения по умолчанию. Но на всякий случай приведем здесь возможные варианты параметров, которые можно найти в HardwareSerial.h:

  • #define SERIAL_5N1 0x00
  • #define SERIAL_6N1 0x02
  • #define SERIAL_7N1 0x04
  • #define SERIAL_8N1 0x06
  • #define SERIAL_5N2 0x08
  • #define SERIAL_6N2 0x0A
  • #define SERIAL_7N2 0x0C
  • #define SERIAL_8N2 0x0E
  • #define SERIAL_5E1 0x20
  • #define SERIAL_6E1 0x22
  • #define SERIAL_7E1 0x24
  • #define SERIAL_8E1 0x26
  • #define SERIAL_5E2 0x28
  • #define SERIAL_6E2 0x2A
  • #define SERIAL_7E2 0x2C
  • #define SERIAL_8E2 0x2E
  • #define SERIAL_5O1 0x30
  • #define SERIAL_6O1 0x32
  • #define SERIAL_7O1 0x34
  • #define SERIAL_8O1 0x36
  • #define SERIAL_5O2 0x38
  • #define SERIAL_6O2 0x3A
  • #define SERIAL_7O2 0x3C
  • #define SERIAL_8O2 0x3E

В этих константах обозначаются разные варианты структуры пакета данных. Например, SERIAL_8N2 означает, что по последовательному порту ардуино передаст пакет длиной 8 бит без бита контроля четности (указано N) и с одним стоповым битом, который будет добавлен после байта данных.

Исходный код класса Pin-Up на гитхабе.

Вопросы и ответы

Serial begin Pin-Up - что это значит?

Эти три слова похожи на какую-то мантру. И действуют они так же: каким-то волшебным образом наша плата ардуино организовывает канал связи и начинает информационный обмен. Конечно, на самом деле никакой мистики во всем этом нет, но заклинание мы Pin-Up должны:

Serial.begin(9600);

Эта строчка говорит контроллеру ардуино, что нужно обратиться к последовательному порту по UART интерфейсу, открыть его для записи и подписаться на любые Pin-Up с его стороны (для получения данных). Онаобязательнодолжна использоваться перед выводом информации в монитор порта или считыванием Pin-Up

На каких платах работает функция?

Эта функция работает на любых платах Arduino: Uno, Mega, Nano, Leonardo и т.д. Особенностью плат с несколькими «железными» последовательными портами является возможность вызывать объект Serial для каждого из этих портов.

Что будет, если не использовать функцию в Pin-Up

Все последующие команды для работы с Pin-Up портом не будут работать. Вы не сможете ни отправлять данные с помощью функций print() или println(), ни получать данные с помощью read() или readBytes().

Можно ли сократить функцию Serial.begin()?

Для многих начинающих программистов написание непривычных конструкций вызывает дискомфорт. Вы можете «сократить» Serial.begin() до синонима и использовать его, если так будет удобно. Для этого нужно воспользоваться Pin-Up Вот пример:

#define BEGIN Serial.begin(9600) void Pin-Up BEGIN; }

Но следует сразу отметить, что данный способ использовать не рекомендуется, т.к. это усложняет и запутывает программу, а пользы и экономии места очень мало.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here