• Что библиотека Arduino SPI позволяет облегчигь коммуникации между платой Arduino и ведомыми устройствами.
• Что можно обмениваться данными с несколькими устройствами SPI, используя общие линии данных и синхронизации и раздельные линии SS выбора ведомого устройства.
• Как управлять SPI цифровыми потенциометрами с помощью библиотеки Arduino SPI.
• Как пользоваться техническими описаниями устройств.
• Как одновременно регулировать громкость и частоту звукового сигнала, используя библиотеку Tone и цифровой потенциометр SPI.
Листинг 9.2. Управление светодиодами и громкостью динамика с помощью SPI-потенциометров - LED_speaker.ino
// Изменение яркости светодиодов не с помощью ШИМ,
// а регулировкой входного напряжения
// Подключение Arduino библиотеки SPI
#include <SPI.h>
const int SPEAKER=8; // Вывод подключения динамика
int freq = 100;
// При подключении библиотеки SPI
// по умолчанию используются контакты
// 11 = MOSI, 12 = MISO, 13 = CLK
const int SS1=10;// Контакт выбора SS микросхемы 1
const int SS2=9;// Контакт выбора SS микросхемы 2
const byte REG0=B00000000; // Команда записи в регистр 0
//(выбор первого потенциометра)
const byte REG1=B00010000; // Команда записи в регистр 1
//(выбор второго потенциометра)
void setup()
{
// Настройка выводов выбора SS на выход
pinMode(SS1, OUTPUT);
pinMode(SS2, OUTPUT);
// Инициализация аппаратного SPI
SPI.begin();
}
//Подпрограмма выбора и отправки данных
//Chip 1 (SS 10) регистр 0 - красный светодиод
//Chip 1 (SS 10) регистр 1 - желтый светодиод
//Chip 2 (SS 9) регистр 0 - зеленый светодиод
//Chip 2 (SS 9) регистр 1 - динамик
void setReg(int SS, int reg, int level)
{
digitalWrite(SS, LOW);// Установка SS в низкий уровень (выбор)
SPI.transfer(reg);// Отправка команды
SPI.transfer(level);// Отправка значения (0-128)
digitalWrite(SS, HIGH);// Установка SS в высокий уровень
}
void loop()
{
tone(SPEAKER, freq);// Частота звука
}
- 199 -
Глава 10. Взаимодействие с жидкокристаллическими дисплеями
Список деталей
Для повторения примеров главы вам понадобятся следующие детали:
• плата Arduino Uno;
• USB-кабель В (для Uno );
• микрофон;
• цифровой SPI-потенциометр МСР4231;
• перемычки;
• макетная плата;
• динамик;
• две кнопки;
• вентилятор;
• 16х2-символьный ЖК-дисплей;
• 2 резистора номиналом 4,7 кОм;
• 2 резистора номиналом 10 кОм;
• 1 резистор номиналом 150 Ом;
• 1 потенциометр 10 кОм;
• датчик температуры ТС74AО-5.0 VAT I2C;
• набор перемычек;
• макетная плата.
На странице http://www.exploringarduino.com/content/ch10 можно загрузить программный код, видеоуроки и другие материалы для данной главы. Кроме того, листинги примеров можно скачать со страницы www.wiley.com/go/exploringarduino в разделе Downloads.
- 203 -
При проектировании автономных устройств стараются сделать так, чтобы их работа не зависела от компьютера. До сих пор для отображения информации, более сложной, чем включение индикатора, нам требовался внешний компьютер. Добавив жидкокристаллический дисплей (LCD) на плату Arduino, можно отображать сложную информацию (показания датчиков, отсчет временных промежутков, настройки и т. д.) непосредственно в устройстве без привязки к монитору компьютера.
В этой главе вы узнаете, как подключить LCD к плате Arduino, как использовать библиотеку Arduino LiquidCrystal для вывода текста и произвольных пользовательских символов на экран жидкокристаллического дисплея. Изучив основы, мы, опираясь на опыт предыдущих глав, сможем создать простой прибор, измеряющий и показывающий температуру, а также включающий вентилятор для охлаждения.
ЖК-дисплей будет отображать информацию о температуре, звуковой сигнал от динамика предупредит о повышении температуры, а вентилятор включится автоматически для охлаждения.
ПРИМЕЧАНИЕ
Видеоурок о работе с жидкокристаллическим дисплеем находится по адрес?
http://www.jeremyblum.com/2011/07/31/tutorial-13-for-arduino-liquid-crystal-displays[12]
Вы также можете найти этот видеофайл на сайте издательства Wiley.
10.1. Настройка жидкокристаллического дисплея
В устройствах, описанных в этой главе, мы применим жидкокристаллический дисплей. Подобные индикаторы часто встречаются и имеют множество модификаций.
Наиболее распространены дисплеи, содержащие 16х2 символов, имеющие 16 (или 14, если нет подсветки) контактов в один ряд. Для рассмотренных далее примеров выбран 16-контактный ЖК-дисплей, на экране которого одновременно может отображаться 32 символа (16 столбцов и 2 строки).