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 с несколькими I 2C ведомыми 2 устройствами (если они имеют разные адреса) по двухпроводному протоколу I c.
• Как библиотека Wire облегчает связь с I 2C-устройствами, подключенными к выводам А4 и А5 платы.
• Как объединить связь по протоколу I 2C со сдвиговыми регистрами и обменом по последовательному порту для создания более сложных систем.
• Как генерировать шрифты для динамически обновляемых текстов в программе на Processing.
• Как отображать данные, полученные от I 2C-устройств, подключенных к 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.
Что вы узнаете в этой главе
Вы уже знакомы с двумя интерфейсами связи, используемыми платой Arduino: шиной I 2C и последовательной шиной UART. В этой главе вы узнаете о третьем интерфейсе цифровой связи, поддерживаемом аппаратными средствами Arduino, о последовательной шине периферийного интерфейса (или SPI).
В отличие от I 2C, шина SPI имеет отдельные линии для отправки и получения данных, а также дополнительную линию для выбора ведомого устройства. Это требует
- 187 -
наличия дополнительных выводов, но устраняет проблему адресации ведомого устройства. SPI-интерфейс, по сравнению с более высокой скорости. Далее мы рассмотрим встроенную в Arduino IDE библиотеку SPI и аппаратные средства платы Arduino для подключения цифрового потенциометра. С помощью цифрового потенциометра будем регулировать яркость светодиода и громкость динамика, что позволит создать простое устройство, формирующее световые и звуковые эффекты.
ПРИМЕЧАНИЕ
Вы можете шаг за шагом посмотреть демонстрационный видеоурок к главе, расположенный по адресу http://www.jeremyblum.com/2011/02/2011/02/20/ardulno-tutorial-8-spl-lnterfaces [11] На русском: http://wiki.amperka.ru/видеоуроки:8-интерфейсы-spi.
. Этот видеоурок также доступен на сайте издательства Wiley.
9.1. Общие сведения о протоколе SPI
Интерфейс SPI, разработанный компанией "Моторола", представляет собой полнодуплексный последовательный стандарт связи, который поддерживает одновременный двунаправленный обмен данными между ведущим устройством (мастером)
и одним или несколькими подчиненными. Поскольку протокол SPI не имеет формального стандарта, работа различных устройств SPI может немного отличаться (например, различно число передаваемых в пакете битов или может отсутствовать линия выбора ведомого устройства). Далее рассмотрим общепринятые команды SPI, которые поддерживаются в Arduino IDE.
Читать дальше