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

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

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

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

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

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

Интервал:

Закладка:

Сделать

Во-вторых, нужно добавить фрагмент кода для работы со сдвиговым регистром ( см. главу 7) и изменить функцию map(), приводящую светодиодные значения к требуемому диапазону температур. Еще раз взгляните на листинг 7.3, откуда мы возьмем большую часть кода и внесем туда небольшие коррективы. Сначала уменьшим число элементов массива для отображения гистограммы с девяти до восьми. Это нужно, чтобы один светодиод показывал, что система работает (нулевой элемент исключаем из массива). Также следует изменить значение переменных для масштабирования, чтобы отобразить интересующий диапазон температур.

Я выбрал диапазон от 24 до 31°С (75-88 F), но вы можете задать любой другой.

Листинг 8.2 содержит полный текст программы.

Листинг 8.2. Чтение данных с I 2C-датчика температуры с отображением на светодиодной гистограмме и отправкой в последователный порт -

// Чтение температуры из I 2C-датчика температуры,

// отображение на светодиодной гистограмме и вывод

// в Processing-приложение

// Подключение библиотеки Wire

#include

// Контакт для подключения вывода DATA

const int SER =8;

const int LATCH =9; // Контакт для подключения вывода LATCH

const int CLK =10; // Контакт для подключения вывода CLOCK

int temp_address = 72;

// Задание значений светодиодов

int vals[8] = {1,3,7,15,31,63,127,255};

void setup()

{

// Запуск последовательного порта

Serial.begin(9600);

// Создание объекта Wire

Wire.begin();

- 181 -

// Установить контакты на вывод (OUTPUT)

pinMode(SER, OUTPUT);

pinMode(LATCH, OUTPUT);

pinMode(CLK, OUTPUT);

}

void loop()

{

// Отправка запроса

// Выбор устройства отправкой адреса устройства

Wire.beginTransmission(temp_address);

// Установка бита asking в 0 для чтения

Wire.write(0);

// Отправка стоп-бита

Wire.endTransmission();

// Чтение температуры из устройства

// Получить 1 байт по адресу устройства

Wire.requestFrom(temp_address, 1);

// Ожидание ответа

while(Wire.available() == 0);

// Присваивание полученного значения переменной

int с = Wire.read();

// Масштабирование температуры для светодиодной гистограммы

int graph = map(c, 24, 31, 0, 7);

graph = constrain(graph,0,7);

digitaJWrite(LATCH, LOW);

// LATCH - низкий - начало отправки

shiftOut(SER, CLK, MSBFIRST, vals[graph]); // Отправка, старший

// бит - первый

digitalWrite(LATCH, HIGH);

// LATCH - высокий, окончание отправки

// Перевод данных из шкалы Цельсия в шкалу Фаренгейта

int f = round(c*9,0/5,0 +32,0);

// Отправка значения в градусах Цельсия и Фаренгейта

// в последовательный порт

Serial.print(c);

Serial.print("C,");

Serial.print(f);

Serial.print("F.");

delay(500);

}

После загрузки кода листинга 8.2 в плату Arduino можно наблюдать, как меняется цвет светодиодов при изменении температуры. Дотроньтесь до датчика рукой, чтобы повысить температуру. Светодиодная гистограмма должна измениться. Теперь

- 182 -

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

8.4.3. Написание программы на Processing

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

Так как обновлять текст нужно в режиме реального времени, необходимо сначала узнать, как загрузить шрифты в программу на Processing. Откройте Processing приложение и создайте новый пустой проект. Сохраните файл, прежде чем продолжить. Затем через контекстное меню Tools -> Create Font вызовите окно, которое изображено на рис. 8.9.

Рис. 8.9. Загрузка шрифтов в Processing-приложение

Выберите свой любимый шрифт и размер (для этой программы я рекомендую размер около 200). После этого нажмите кнопку ОК. Шрифт будет автоматически установлен в папку data данного проекта.

Программа на Processing должна выполнить следующее:

• Сгенерировать графическое окно на компьютере для отображения данных температуры в градусах Цельсия и Фаренгейта.2

- 183 -

• Прочитать входящие данные из последовательного порта, преобразовать их и сохранить значения в локальных переменных для отображения на компьютере.

• Постоянно обновлять экран при получении новых значений из последовательного порта.

Скопируйте код из листинга 8.3, задайте правильное наименование порта для вашего компьютера и имя выбранного шрифта. Подключите плату Arduino к компьютеру и нажмите на кнопку Выполнить. И наслаждайтесь волшебной картинкой!

Листинг 8.3. Программа на Processing для отображения данных температуры - display_temp.pde

// Отображение температуры, получаемой с I 2C-датчика

import processing.serial.*;

Serial port;

String temp_c = "";

String temp_f = "";

String data = "";

int index = 0;

PFont font;

void setup()

{

size(400,400);

// Измените "СОМ9" на имя вашего последовательного порта

port = new Serial(this, "СОМ9", 9600);

port.bufferUntil('.');

// Измените имя шрифта, выбранное вами

font = loadFont("AgencyFB-Bold-200.vlw");

textFont(font, 200);

}

void draw()

{

background(0,0,0);

fill(46, 209, 2);

text(temp_c, 70, 175);

fill(0, 102, 153);

text(temp_f, 70, 370);

}

void serialEvent (Serial port)

{

data = port.readStringUntil('.');

data = data.substring(0, data.length() - 1);

// Ищем запятую - разделитель данных по Цельсию и Фаренгейту

index = data.indexOf(",");

- 184 -

// Получить температуру в градусах Цельсия

temp_c = data.substring(0, index);

// Получить температуру по Фаренгейту

temp_f = data.substring(index+1, data.length());

}

Как и в предыдущих примерах на Processing, программа начинается с импорта библиотеки serial и настройки последовательного порта. В секции setup() задается размер окна отображения, загружается сгенерированный шрифт и настраивается загрузка данных последовательного порта в буфер до получения символа точки.

Функция draw() заполняет фон окна черным цветом и выводит значения температуры по Цельсию и по Фаренгейту двумя цветами. С помощью команды fill() вы сообщаете Processing о цвете (в значениях RGB) следующего элемента, который будет добавлен на экран. Функция serialEvent() вызывается при наступлении события bufferuntil(), она считывает содержимое буфера в строку, а затем разбивает его, учитывая расположение запятой. Два значения температуры хранятся в переменных, которые затем выводятся в окно приложения.

Результат выполнения программы показан на рис. 8.10.

Рис 810 Отображение температуры на Processing При изменении температуры - фото 84

Рис. 8.10. Отображение температуры на Processing

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

ПРИМЕЧАНИЕ

Для просмотра демонстрационного видеофильма системы мониторинга температуры посетите страницу http:/lwww.exploringarduino.com/content/ch8. Этот видеофильм доступен также на сайте издательства Wiley.

- 185 -

Резюме

В этой главе вы узнали следующее:

• Как организовать связь платы Arduino с несколькими I 2C ведомыми 2 устройствами (если они имеют разные адреса) по двухпроводному протоколу I c.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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