analogWrite(LED3, dist3);
delay(300);
dist4 = readDistance(165);
analogWrite(LED4, dist4);
delay(300);
}
int readDistance (int pos)
{
myServo.write(pos);
delay(600);
int dist = analogRead(IR);//Чтение данных с датчика расстояния
dist = map(dist, 50, 500, 0, 255); //Преобразование к нужному диапазону
dist = constrain(dist, 0, 255);
return dist;//Выдача значения, соответствующего расстоянию
}
В программе есть функция readDistance(), которая поворачивает вал сервопривода на определенный угол, измеряет расстояние, масштабирует его, а затем возвращает полученное значение в цикл loop(). Какой диапазон значений выбрать для свето
- 107 -
диодов, зависит от конкретной ситуации. У меня для самого дальнего объекта датчик выдавал значение 50, до ближайших - 500.
После загрузки кода и запуска программы система должна функционировать, как на демонстрационных видеоклипах, перечисленных в начале главы.
Резюме
В этой главе вы узнали следующее:
• Как работают двигатели постоянного тока.
• Что двигатели являются индуктивными нагрузками, которые следует снабдить надлежащей защитой и схемой питания, чтобы безопасно взаимодействовать с платой Arduino.
• Как управлять скоростью и направлением вращения двигателя с помощью ШИМ и H-моста.
• Что серводвигатели точно позиционируются и управляются с помощью Arduino библиотеки Servo.
• Как создать вторичный источник питания 5 В от батареи 9 В с помощью стабилизатора напряжения.
• Что ИК-датчики получают инфракрасный сигнал, отраженный от объекта, и возвращают аналоговые значения, соответствующие расстоянию до данного объекта.
• Что комментарии важны для отладки и совместного использования программ.
Глава 5. Работаем со звуком
Работаем
Список деталей
Для повторения примеров главы вам понадобятся следующие детали:
• плата Arduino Uno;
• USB-кабель;
• 4 кнопки;
• 5 резисторов номиналом 10 кОм;
• 1 резистор номиналом 150 Ом;
• перемычки;
• провода;
• макетная плата;
• потенциометр 10 кОм;
• динамик 8 Ом.
Электронные ресурсы к главе
На странице http://www.exploringarduino.com/content/ch5 можно загрузить программный код, видеоуроки и другие материалы для данной главы. Кроме того, листинги примеров можно скачать со страницы www.wiley.com/go/exploringarduino в разделе Downloads.
Что вы узнаете в этой главе
Как известно, у человека пять органов чувств. Мы не будем задействовать вкус при общении с электронными компонентами, ведь никому не придет в голову облизывать Arduino! Запах нам тоже не пригодится, если вы почувствуете запах от платы, то скорее всего схема сгорела. Остаются осязание, зрение и слух. При работе с потенциометром и кнопками требуется осязание, а при включении светодиодов зрение. Без употребления остался только слух. Эта глава посвящена созданию звука с помощью Arduino, так что теперь ваши устройства обретут собственный "голос".
- 109 -
Генерировать звук с помощью Arduino можно несколькими способами. Самый простой способ - использование функции tone(), которую мы рассмотрим в данной главе. Существуют также различные дополнительные платы, подключаемые к основной плате Arduino с помощью штыревых разъемов и расширяющие музыкальные возможности Arduino. Некоторые из плат расширения мы рассмотрим в последующих главах. Если у вас плата Arduino Due, то для генерации звуков подойдет встроенный цифроаналоговый преобразователь (ЦАП).
Перед тем как приступить к генерации звука с помощью Arduino, вы должны понимать, что такое звук и как люди воспринимают его. В этом разделе мы расскажем о свойствах звуковых волн, воспроизведении музыки, речи и других звуков.
Звук распространяется по воздуху в виде волны. Работа звуковых колонок, удар в барабан или колокол создают вибрацию воздуха. Частицы воздуха за счет колебаний передают энергию все дальше и дальше. Волна давления передается от источника к вашей барабанной перепонке через реакцию вибрирующих частиц.
Теперь посмотрим, как эти знания помогут нам сгенерировать звуки с помощью платы Arduino?
Вы можете управлять двумя свойствами этих колеблющихся частиц: частотой и амплитудой. Под частотой понимают скорость вибрации частиц воздуха, а амплитуда представляет собой размах их колебаний. В физическом смысле звуки с большой амплитудой громче, чем с малой. Тон высокочастотных звуков выше (например, сопрано), а низкочастотных- ниже (например, бас). Рассмотрим график на рис. 5.1, на котором изображены синусоидальные звуковые волны с различными амплитудами и частотами.
Читать дальше