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

Программа из листинга 8.1 также преобразует температуру по Цельсию в градусы Фаренгейта. Формулу такого преобразования можно найти в Интернете. В нашем примере результат округлен до целого числа.

Теперь запустите код листинга 8.1 на плате Arduino и откройте монитор последовательного порта. Вы должны увидеть вывод данных в последовательный порт, который выглядит примерно так, как на рис. 8.7.

Рис. 8.7. Отправка данных из I2C-датчика температуры в последовательный порт

- 179 -

8.4. Проект, объединяющий регистр сдвига, последовательный порт и шину I2C

Теперь у нас есть простая схема, получающая данные от I2C-устройства и выводящая результаты в последовательный порт, и можно сделать нечто более интересное. Подключив сдвиговый регистр ( см. главу 7), а также Processing-приложение, визуализируем температуру на экране компьютера.

8.4.1. Создание системы мониторинга температуры

Сначала соберем схему устройства (рис. 8.8). По существу нужно лишь добавить сдвиговый регистр к схеме, изображенной на рис. 8.4.

Рис. 8.8. I2C-датчик температуры с гистограммным индикатором на основе сдвигового регистра

- 180 -

8.4.2. Модификация кода программы

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

Во-первых, измените операторы вывода данных в последовательный порт следующим образом:

Serial.print(c);

Serial.print("C,");

Serial.print(f);

Serial.print("F.");

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

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

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

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


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

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

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

// в 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 уже передает необработанные данные на компьютер. Необходимо написать программу обработки, которая сможет интерпретировать их и отобразить на компьютере в удобном виде.

Перейти на страницу:

Похожие книги

Самоучитель UML
Самоучитель UML

Самоучитель UMLПервое издание.В книге рассматриваются основы UML – унифицированного языка моделирования для описания, визуализации и документирования объектно-ориентированных систем и бизнес-процессов в ходе разработки программных приложений. Подробно описываются базовые понятия UML, необходимые для построения объектно-ориентированной модели системы с использованием графической нотации. Изложение сопровождается примерами разработки отдельных диаграмм, которые необходимы для представления информационной модели системы. Цель книги – помочь программистам освоить новую методологию разработки корпоративных программных приложений для последующего применения полученных знаний с использованием соответствующих CASE-инструментов.

Александр Васильевич Леоненков , Александр Леоненков

Зарубежная компьютерная, околокомпьютерная литература / Программирование / Прочая компьютерная литература / Книги по IT
Внутреннее устройство Microsoft Windows (гл. 1-4)
Внутреннее устройство Microsoft Windows (гл. 1-4)

Книга посвящена внутреннему устройству и алгоритмам работы основных компонентов операционной системы Microsoft Windows — Windows Server 2003, Windows XP и Windows 2000 — и файловой системы NTFS. Детально рассмотрены системные механизмы: диспетчеризация ловушек и прерываний, DPC, APC, LPC, RPC, синхронизация, системные рабочие потоки, глобальные флаги и др. Также описываются все этапы загрузки операционной системы и завершения ее работы. B четвертом издании книги больше внимания уделяется глубокому анализу и устранению проблем, из-за которых происходит крах операционной системы или из-за которых ее не удается загрузить. Кроме того, рассматриваются детали реализации поддержки аппаратных платформ AMD x64 и Intel IA64. Книга состоит из 14 глав, словаря терминов и предметного указателя. Книга предназначена системным администраторам, разработчикам серьезных приложений и всем, кто хочет понять, как устроена операционная система Windows.Названия всех команд, диалоговых окон и других интерфейсных элементов операционной системы приведены как на английском языке, так и на русском.Версия Fb2 редакции — 1.5.

Марк Руссинович , Дэвид Соломон

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT
Основы информатики: Учебник для вузов
Основы информатики: Учебник для вузов

Учебник состоит из двух разделов: теоретического и практического. В теоретической части учебника изложены основы современной информатики как комплексной научно-технической дисциплины, включающей изучение структуры и общих свойств информации и информационных процессов, общих принципов построения вычислительных устройств, рассмотрены вопросы организации и функционирования информационно-вычислительных сетей, компьютерной безопасности, представлены ключевые понятия алгоритмизации и программирования, баз данных и СУБД. Для контроля полученных теоретических знаний предлагаются вопросы для самопроверки и тесты. Практическая часть освещает алгоритмы основных действий при работе с текстовым процессором Microsoft Word, табличным редактором Microsoft Excel, программой для создания презентаций Microsoft Power Point, программами-архиваторами и антивирусными программами. В качестве закрепления пройденного практического курса в конце каждого раздела предлагается выполнить самостоятельную работу.

Максим Анатольевич Беляев , Вадим Васильевич Лысенко , Лариса Александровна Малинина

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT