Так как обновлять текст нужно в режиме реального времени, необходимо сначала узнать, как загрузить шрифты в программу на Processing. Откройте Processing приложение и создайте новый пустой проект. Сохраните файл, прежде чем продолжить. Затем через контекстное меню Tools -> Create Font вызовите окно, которое изображено на рис. 8.9.
Рис. 8.9. Загрузка шрифтов в Processing-приложение
Выберите свой любимый шрифт и размер (для этой программы я рекомендую размер около 200). После этого нажмите кнопку ОК. Шрифт будет автоматически установлен в папку data данного проекта.
Программа на Processing должна выполнить следующее:
• Сгенерировать графическое окно на компьютере для отображения данных температуры в градусах Цельсия и Фаренгейта.2
- 183 -
• Прочитать входящие данные из последовательного порта, преобразовать их и сохранить значения в локальных переменных для отображения на компьютере.
• Постоянно обновлять экран при получении новых значений из последовательного порта.
Скопируйте код из листинга 8.3, задайте правильное наименование порта для вашего компьютера и имя выбранного шрифта. Подключите плату Arduino к компьютеру и нажмите на кнопку Выполнить. И наслаждайтесь волшебной картинкой!
Листинг 8.3. Программа на Processing для отображения данных температуры - display_temp.pde
// Отображение температуры, получаемой с I2C-датчика
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.
Рис. 8.10. Отображение температуры на Processing
При изменении температуры датчика данные в окне Processing-приложения, а также светодиодная гистограмма должны обновиться.
ПРИМЕЧАНИЕ
Для просмотра демонстрационного видеофильма системы мониторинга температуры посетите страницу http:/lwww.exploringarduino.com/content/ch8. Этот видеофильм доступен также на сайте издательства Wiley.
- 185 -
Резюме
• Как организовать связь платы Arduino с несколькими I2C ведомыми 2 устройствами (если они имеют разные адреса) по двухпроводному протоколу I c.
• Как библиотека Wire облегчает связь с I2C-устройствами, подключенными к выводам А4 и А5 платы.
• Как объединить связь по протоколу I2C со сдвиговыми регистрами и обменом по последовательному порту для создания более сложных систем.
• Как генерировать шрифты для динамически обновляемых текстов в программе на Processing.
• Как отображать данные, полученные от I2C-устройств, подключенных к Arduino, с помощью приложения на Processing.
Глава 9. Интерфейсная шина SPI
Интерфейсная
Для повторения примеров главы вам понадобятся следующие детали:
• плата Arduino Uno;
• USB-кабель В (для Uno );
• 1 красный светодиод;
• 1 желтый светодиод;
• 1 зеленый светодиод;
• 1 синий светодиод;
• 4 резистора номиналом 100 Ом;
• 2 резистора номиналом 4,7 кОм;
• динамик;
• цифровой SPI потенциометр МСР4231;
• перемычки;
• макетная плата.
На странице http://www.exploringarduino.com/content/ch9 можно загрузить программный код, видеоуроки и другие материалы для данной главы. Кроме того, листинги примеров можно скачать со страницы www.wiley.com/go/exploringarduino в разделе Downloads.
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии