Джереми Блум - Изучаем Arduino: инструметы и методы технического волшебства

Тут можно читать онлайн Джереми Блум - Изучаем Arduino: инструметы и методы технического волшебства - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая околокомпьтерная литература, издательство БХВ-Петербург, год 2015. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Джереми Блум - Изучаем Arduino: инструметы и методы технического волшебства краткое содержание

Изучаем Arduino: инструметы и методы технического волшебства - описание и краткое содержание, автор Джереми Блум, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Книга посвящена проектированию электронных устройств на основе микроконтроллерной платформы Arduino. Приведены основные сведения об аппаратном и программном обеспечении Arduino. Изложены принципы программирования в интегрированной среде Arduino IDE. Показано, как анализировать электрические схемы, читать технические описания, выбирать подходящие детали для собственных проектов. Приведены примеры использования и описание различных датчиков, электродвигателей, сервоприводов, индикаторов, проводных и беспроводных интерфейсов передачи данных. В каждой главе перечислены используемые комплектующие, приведены монтажные схемы, подробно описаны листинги программ. Имеются ссылки на сайт информационной поддержки книги. Материал ориентирован на применение несложных и недорогих комплектующих для экспериментов в домашних условиях.
Для радиолюбителей

Изучаем Arduino: инструметы и методы технического волшебства - читать онлайн бесплатно полную версию (весь текст целиком)

Изучаем Arduino: инструметы и методы технического волшебства - читать книгу онлайн бесплатно, автор Джереми Блум
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Поэтому вместо функции serial.println() в листинге 6.3 указана функция Serial.print()

Различие между char и int

При отправке алфавитно-цифрового символа через монитор последовательного порта мы на самом деле не отправляем "5" или "А". Мы посылаем байт, который компьютер интерпретирует как символ. В случае последовательной связи для представления всех букв, цифр, символов и специальных команд используется кодировка ASCII. Основной набор символов ASCII (рис. 6.9) представляет собой 7-битовый набор, содержащий 128 символов и команд.

При получении значения, отправленного с компьютера, данные должны быть считаны, как char (см. листинг 6.3). Даже если вы ожидаете из последовательного терминала отправки числа, вам необходимо прочитать байт, как символ, а затем при необходимости конвертировать его. Если вы измените программу листинга 6.3, объявив переменную data как int, то, отправив значение 5, в последовательный монитор вернется значение 53 (десятичное представление символа "5"). Вы можете убедиться в этом, посмотрев на рис. 6.9.

Тем не менее, в Arduino часто необходимо отправлять числовые значения. Как это сделать? Существует несколько способов. Во-первых, можно просто сравнить сами символы. Если вы хотите зажечь светодиод при отправке из монитора цифры 1, то можно непосредственно сравнить значения символов:

if(Serial.read() == '1')

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

int val = Serial.read() - '0'

Такой способ не годится для чисел больше 9, потому что они содержат несколько цифр. В этом случае нас выручит функция parseInt(), входящая в Arduino IDE, ко

- 131 -

Рис 69 Набор символов ASCII торая извлекает из последовательного потока - фото 60

Рис. 6.9. Набор символов ASCII

торая извлекает из последовательного потока данных целые числа. Далее мы подробно рассмотрим описанные методы.

Отправка ОДИНОЧНЫХ символов для управления светодиодом

Начнем с написания программы, которая использует простое сравнение символов для управления состоянием светодиода. Вы будете отправлять символ "1 ", чтобы включить светодиод, и "0", чтобы выключить его. Соедините светодиод с контактом 9 платы Arduino, как показано на рис. 6.10.

Как мы уже говорили, при отправке одиночного символа необходимо выполнить простое символьное сравнение. Каждый раз, когда символ окажется в буфере, мы сравниваем его с «0» или «1» и выполняем нужные действия. Загрузите в Arduino код листинга 6.4 и поэкспериментируйте с отправкой нуля или единицы из последовательного терминала.

- 132 -

Рис 610 Подсоединение светодиода к контакту 9 платы Arduino Листинг 64 - фото 61

Рис. 6.10. Подсоединение светодиода к контакту 9 платы Arduino

Листинг 6.4. Управление светодиодом последовательной отправкой символов- single_char_control.ino

// Переключение состояния светодиода отправкой одиночного символа

const int LED=9;

char data;// Переменная для хранения получаемого символа

void setup()

{

Serial.begin(9600); // Инициализация последовательного порта

// на скорости 9600

pinMode(LED, OUTPUT);

}

- 133 -

void loop()

{

// Если в буфере есть символ

if (Serial.available() > 0)

{

data = Serial.read(); // Чтение байта из буфера

// Включение светодиода

if (data == '1')

{

digitalWrite(LED, HIGH);

Serial.println ( "LED ON");

}

// Выключение светодиода

else if (data == '0')

{

digitalWrite(LED, LOW);

Serial.println ( "LED OFF");

}

}

}

Обратите внимание, что вместо простого оператора else применен оператор else if. Это необходимо, потому что в опции терминала установлена отправка символа перевода строки при каждой передаче. Получив символ перевода строки, функция Serial.read() определит, что он не равен '0' или '1', в результате со светодиодом ничего не произойдет. Если бы мы использовали оператор else, то отправка и '0' и '1' приводила бы к откточению светодиода. При отправке '1' светодиод будет включен и немедленно выкточен снова, когда будет получена последовательность \n!

Отправка последовательности цифр для управления RGB-светодиодом

Отправка одного управляющего символа позволяет управлять единственным цифровым контактом, но что делать, если требуются более сложные алгоритмы управления? В этом разделе мы рассмотрим передачу нескольких групп цифр, разделеых запятой, для управления множеством устройств. Чтобы разобраться в этой задаче, соберем схему подключения RGB-светодиода с общим катодом, как показано на рис. 6.11.

Для управления RGB-светодиодом мы посылаем три отдельные 8-битовые значения (0-255), чтобы задать яркость каждого цвета. Например, чтобы установить максимальную яркость всех цветов, нужно послать "255,255,255". Перечислим проблемы, возникающие при реализации данной задачи:

- 134 -

• необходимо различать цифры и запятые;

• последовательность символов нужно привести к целочисленному формату, чтобы использовать функцию analogWrite();

• числовое значение может состоять из одной, двух или трех цифр.

К счастью, в Arduino IDE есть очень удобная функция для анализа последовательности цифр - Serial. parseInt(). При каждом вызове этой функции она ожидает прихода в буфер последовательности цифр и затем преобразует ее в целое число.

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

Чтобы посмотреть, как действует эта функция, загрузите программу листинга 6.5

на плату Arduino.

Рис 611 Подключение RGBсветодиода к Arduino 135 Листинг 65 - фото 62

Рис. 6.11. Подключение RGB-светодиода к Arduino

- 135 -

Листинг 6.5. Последовательное управление RGB-светодиодом - list_control.ino

// Отправка многосимвольных значений

// Константы выводов RGB-светодиода

const int RED =11;

const int GREEN =10;

const int BLUE =9;

// Переменные значений выводов RGB

int rval = 0;

int gval = 0;

int bval = 0;

void setup()

{

Serial.begin(9600); // Инициализация последовательного порта

// на скорости 9600

// Установить контакты на выход OUT

pinMode(RED, OUTPUT);

pinMode(GREEN, OUTPUT);

pinMode(BLUE, OUTPUT);

}

void loop()

{

// Пока в буфере есть данные

while (Serial.available() > 0)

{

rval = Serial.parseInt(); // Первое ЧИСЛО

gval = Serial.parseInt(); // Второе число

bval = Serial.parseInt(); // Третье число

if (Serial. read() == '\n') // Конец передачи

{

// Установка яркости светодиода

analogWrite(RED, rval);

analogWrite(GREEN, gval);

analogWrite(BLUE, bval);

}

}

}

Программа осуществляет поиск трех целочисленных значений, пока не обнаружит символ перевода строки (\n). Как только это произойдет, полученные значения переменных используются для установки яркости светодиодов. Откройте монитор последовательного порта и введите три значения от 0 до 255, разделенные запятой, например "200,30, 180". Попробуйте получить различные цвета, вводя разные цифры.

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

Интервал:

Закладка:

Сделать


Джереми Блум читать все книги автора по порядку

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




Изучаем Arduino: инструметы и методы технического волшебства отзывы


Отзывы читателей о книге Изучаем Arduino: инструметы и методы технического волшебства, автор: Джереми Блум. Читайте комментарии и мнения людей о произведении.


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

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