Монк . - Программируем Arduino

Тут можно читать онлайн Монк . - Программируем Arduino - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-db, издательство Издательский дом Питер, год 2017. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программируем Arduino
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом Питер
  • Год:
    2017
  • ISBN:
    978-5-496-02385-6
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Монк . - Программируем Arduino краткое содержание

Программируем Arduino - описание и краткое содержание, автор Монк ., читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Программируем Arduino - читать онлайн бесплатно полную версию (весь текст целиком)

Программируем Arduino - читать книгу онлайн бесплатно, автор Монк .
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Другой довольно запутанный параметр настройки последовательного интерфейса, который может вам встретиться, — это строка вида 8N1. В данном случае она означает: размер пакета 8 бит, отсутствие контроля четности и 1 стоповый бит. Несмотря на возможность других комбинаций, практически все устройства, которые вам попадутся, будут использовать параметр 8N1.

Команды последовательного порта

Команды последовательного порта включены в стандартную библиотеку Arduino, поэтому нет необходимости использовать в скетчах команду include.

Запуск взаимодействий по последовательному порту осуществляется командой Serial.begin, которая принимает параметр со скоростью в бодах:

Serial.begin(9600);

Обычно она вызывается только один раз, в функции setup.

Если используется плата, имеющая несколько последовательных портов, и вы собираетесь организовать обмен через порт по умолчанию (порт 0), достаточно вызвать простую команду Serial.begin. Но для других портов нужно указать в команде номер порта после слова Serial. Например, чтобы запустить взаимодействия по последовательному порту 3 на плате Arduino Due, скетч должен выполнить следующую команду:

Serial3.begin(9600);

После вызова команды Serial.begin приемопередатчик УАПП переходит в режим приема входящих данных и автоматически сохраняет их в буфере, поэтому, даже если процессор занят в это время чем-то другим, данные не будут теряться, пока буфер не переполнится.

Функция loop может проверить наличие входящих данных с помощью функции Serial.available. Она возвращает число байтов, доступных для чтения. Если в буфере нет ни одного байта, она вернет 0. В языке C это равносильно значению false, поэтому часто можно видеть такой код, проверяющий доступность данных:

void loop()

{

if (Serial.available())

{

// прочитать и обработать следующий байт

}

}

Команда read не имеет параметров и просто читает следующий доступный байт из буфера. Функция readBytes читает доступные байты в буфер, организованный внутри скетча. Она принимает два аргумента: буфер (это должна быть ссылка на массив байтов) и максимальное число байтов для чтения. Эта команда может пригодиться в проектах для пересылки в плату Arduino строк переменной длины. Но вообще лучше избегать этого и стараться осуществлять обмен максимально простыми данными фиксированного размера.

Также могут пригодиться функции parseInt и parseFloat, позволяющие сохранять строки, пересылаемые в плату Arduino, как числа в переменных типа int и float соответственно.

void loop()

{

if (Serial.available())

{

int x = parseInt();

}

}

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

Перед использованием функций, таких как parseInt и parseFloat, убедитесь, что понимаете, зачем вы это делаете. Мне приходилось видеть код, написанный другими, который преобразовывал значение int в массив символов и посылал его второй плате Arduino, которая преобразовывала массив обратно в значение int. Такое решение нельзя назвать удачным по следующим причинам.

• В этом нет необходимости. Двоичные данные передаются через последовательный интерфейс ничуть не хуже. Достаточно просто передать старший и младший байты значения int и затем собрать их обратно в значение int на стороне получателя.

• Преобразование чисел в строки и обратно выполняется медленно.

• Вместо шести символов (включая завершающий нулевой символ) по линии связи можно передать всего два байта, составляющие значение int.

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

Примеры, приведенные в разделе «Примеры использования последовательного интерфейса» далее в этой главе, можно использовать в качестве шаблонов при разработке своего кода, осуществляющего обмен данными.

Поддержка последовательного интерфейса включает массу функций, многие из которых вам никогда не понадобятся. Мы охватили здесь только самые необходимые. Информацию об остальных ищите в документации с описанием последовательного интерфейса Arduino по адресу http://arduino.cc/en/Reference/Serial8.

Библиотека SoftwareSerial

Иногда, особенно при использовании модели Arduino Uno, единственного последовательного порта оказывается недостаточно. Библиотека SoftwareSerial позволяет использовать для последовательных взаимодействий практически любую пару контактов, хотя и с некоторыми ограничениями.

• С помощью SoftwareSerial невозможно принимать данные одновременно по нескольким портам.

• Если скетч использует таймеры или внешние прерывания, могут возникать проблемы.

Функции в библиотеке имеют те же имена, что и команды Serial, но продуманы лучше. Библиотека SoftwareSerial поддерживает последовательные взаимодействия с устройствами, использующими инвертированные сигналы, такими как дальномеры MaxSonar. Кроме того, создание объектов SoftwareSerial для соединений выполняется более ясным способом, чем стандартный подход с использованием номеров после слова Serial.

В табл. 10.2 перечислены контакты на платах Uno и Leonardo, которые может использовать библиотека SoftwareSerial. Если вы работаете с платой, имеющей четыре аппаратных последовательных порта, библиотека SoftwareSerial едва ли вам понадобится. Номера контактов без префикса A соответствуют цифровым входам/выходам.

Таблица 10.2.Контакты, доступные библиотеке SoftwareSerial

Модель

Контакты для линии Rx

Контакты для линии Tx

Uno

Любые, кроме 0 и 1

Любые, кроме 0 и 1

Leonardo

Любые, кроме 0 и 1

8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI)

При создании объекта SoftwareSerial нужно передать два параметра с номерами контактов для линий Rx и Tx. Чтобы запустить взаимодействия, нужно вызвать функцию begin и передать ей скорость в бодах:

#include

SoftwareSerial mySerial(10, 11); // RX, TX

void setup()

{

mySerial.begin(9600);

mySerial.println("Hello, world?");

}

Полное описание библиотеки SoftwareSerial можно найти по адресу http://arduino.cc/en/Reference/SoftwareSerial9.

Примеры использования последовательного интерфейса

В этом разделе демонстрируется несколько примеров использования УАПП и библиотеки SoftwareSerial.

Передача из компьютера в Arduino через USB

В первом примере демонстрируется применение монитора последовательного порта для передачи команд в плату Arduino. Раз в секунду Arduino будет посылать значение, прочитанное с аналогового входа A0, и одновременно ждать получения односимвольных команд g (go — вперед) и s (stop — стоп), управляющих передачей прочитанных значений. На рис. 10.3 изображено окно монитора последовательного порта с данными, полученными во время работы скетча.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Монк . читать все книги автора по порядку

Монк . - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Программируем Arduino отзывы


Отзывы читателей о книге Программируем Arduino, автор: Монк .. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x