Джереми Блум - Изучаем Arduino: инструметы и методы технического волшебства
- Название:Изучаем Arduino: инструметы и методы технического волшебства
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2015
- Город:Санкт-Петербург
- ISBN:978-5-9775-3585-4
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Джереми Блум - Изучаем Arduino: инструметы и методы технического волшебства краткое содержание
Для радиолюбителей
Изучаем Arduino: инструметы и методы технического волшебства - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
- 198 -

Рис. 9.7. Схема управления светодиодами и громкостью динамика
Можете также поэкспериментировать с подключением аналоговых датчиков, чтобы световой и звуковой эффект зависел от освещения, движения и др.
Внесем несколько простых изменений в нашу предыдущую программу для управления светодиодами (см. листинг 9.1). Добавьте переменную для контакта, подключенного к динамику, а также переменную для установки частоты сигнала, подаваемого на динамик. При желании внутри цикла loop() можно добавить операторы, увеличивающие частоту сигнала при каждой последующей итерации. Для установки громкости динамика подойдет та же самая функция setLed(), как и раньше, но ее название теперь вводит в заблуждение, так что рекомендуем его изменить. В листинге 9.2 она переименована в setReg().
- 200 -
for (int i=0; i<=128; i++)
{
setReg(SS1,REG0,i);
setReg(SS1,REG1,i);
setReg(SS2,REG0,i);
setReg(SS2,REG1,i);
delay(10);
}
delay(300);
for (int i=128; i>=0; i--)
{
setReg(SS1,REG0,i);
setReg(SS1,REG1,i);
setReg(SS2,REG0,i);
setReg(SS2,REG1,i);
delay(10);
}
delay(300);
freq = freq+100;
if (freq > 2000) freq = 100;
}
Загрузите программу на плату Arduino и убедитесь, что меняется не только яркость светодиодов, но и громкость звука. На каждой итерации частота звука увеличивается на 100 Гц, пока не достигнет 2000 Гц. Громкость динамика регулирует тот же потенциометр, который управляет светодиодами.
И это всего лишь начало. Теперь у вас достаточно знаний, чтобы сделать действительно нечто впечатляющее. Вот несколько советов:
+ можно управлять частотой и громкостью звука по сигналам от датчиков (например, инфракрасный датчик расстояния может менять частоту в зависимости от приближения к устройству и удаления от него);
+ яркость светодиодов можно устанавливать в зависимости от внешних факторов, например от температуры;
+ можно добавить кнопку, чтобы переключать громкость или частоту звука;
+ можно сопоставить световые эффекты с проигрыванием музыки.
ПРИМЕЧАНИЕ
Посмотреть видеоклип, демонстрирующий работу SPI-устройства для создания световых и звуковых эффектов, можно на странице http://www.exploringarduino.com/
content/ch9. Этот видеофайл доступен и на сайте издательства Wiley.
- 201 -
Резюме
• Что согласно протоколу SPI для организации обмена требуются три общие линии (две линии данных и линия синхронизации) и по одной дополнительной линии выбора для каждого ведомого устройства.
• Что библиотека Arduino SPI позволяет облегчигь коммуникации между платой Arduino и ведомыми устройствами.
• Что можно обмениваться данными с несколькими устройствами SPI, используя общие линии данных и синхронизации и раздельные линии SS выбора ведомого устройства.
• Как управлять SPI цифровыми потенциометрами с помощью библиотеки Arduino SPI.
• Как пользоваться техническими описаниями устройств.
• Как одновременно регулировать громкость и частоту звукового сигнала, используя библиотеку Tone и цифровой потенциометр SPI.
Листинг 9.2. Управление светодиодами и громкостью динамика с помощью SPI-потенциометров - LED_speaker.ino
// Изменение яркости светодиодов не с помощью ШИМ,
// а регулировкой входного напряжения
// Подключение Arduino библиотеки SPI
#include
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 I 2C;
• набор перемычек;
• макетная плата.
На странице 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] На русском: http://wiki.amperka.ru/видеоуроки:13-жк-дисплеи-lcd.
Вы также можете найти этот видеофайл на сайте издательства Wiley.
10.1. Настройка жидкокристаллического дисплея
В устройствах, описанных в этой главе, мы применим жидкокристаллический дисплей. Подобные индикаторы часто встречаются и имеют множество модификаций.
Читать дальшеИнтервал:
Закладка: