Генерация тонов движениями пальцев с использованием Arduino

В этом проекте мы рассмотрим небольшое развлекательное устройство на основе платы Arduino. У всех нас есть привычка постукивать по столу или ручке для создания любой случайной музыки. Конечно, это не может считаться хорошей манерой поведения, но нам всем нравится делать это, хотя бы изредка. Поэтому и возникла идея создания подобного проекта. После создания этого проекта вы сможете генерировать тона, постукивая пальцами по чему-нибудь проводящему и создавать свои собственные ритмы, словно играть на пианино на своей ладони. Звучит неплохо, неправда ли?

Внешний вид генерации тонов движениями пальцев с использованием Arduino

Для лучшего понимания данного проекта рекомендуется прочитать статью про использование функции tone() в Arduino.

Необходимые компоненты

Плата Arduino Pro Mini
Пьезоэлектрический динамик/зуммер (Peizo Speaker)
Гибкий датчик
Перчатки на пальцы
Резисторы на 10 кОм
Транзисторы BC547
Батарейка на 9 В

Набор компонентов не является обязательным, поняв работу проекта вы сами можете модернизировать его по своему желанию.

Работа схемы

Схема проектируемого нами “пианино на ладони” на основе платы Arduino представлена на следующем рисунке.

Схема устройства для генерации тонов движениями пальцев на основе ArduinoВ проекте используется 4 датчика: два гибких датчика и две пары Дарлингтона, которые используются как датчики прикосновения (касания). Также для подключения гибких датчиков мы использовали два подтягивающих резисторами сопротивлением 10 кОм. В схеме гибкий датчик используется для генерации трех различных тонов с использованием одного пальца в зависимости от того, насколько он изогнут. Таким образом, с использованием двух пальцев мы можем воспроизводить 6 звуков. Более подробно о работе с гибким датчиком можно прочитать в этой статье.

Пара Дарлингтона

Пара Дарлингтона представляет собой два биполярных транзистора, соединенных таким образом, что ток, усиленный первым транзистором, дополнительно усиливается вторым транзистором. Пара Дарлингтона показана на следующем рисунке:

Схема пары Дарлингтона

В нашем проекте для построения пары Дарлингтона мы использовали два транзистора BC547, коллекторы которых соединены между собой, а эмиттер первого транзистора соединен с базой второго транзистора. Эта схема действует как усилитель с коэффициентом усиления, то есть любого малого сигнала, подаваемого на базу первого транзистора, достаточно для смещения базы второго транзистора. Наше тело действует здесь как земля, поэтому всякий раз, когда мы касаемся базы (основания) транзистора, второй транзистор смещается. На основании этого эффекта мы и построили простой датчик прикосновения для нашего проекта.

Контакты 2 и 3 будут служить контактами прерывания для платы Arduino. На них с помощью внутренних подтягивающих резисторов будет подаваться напряжение высокого уровня, а когда переключатель Дарлингтона будет закрываться на эти контакты будет подаваться земля. Таким образом, когда мы будем касаться базы (провода) первого транзистора пары Дарлингтона в плате Arduino будет генерироваться прерывание.

Использование двух пальцев по этому принципу может производить только два типа тонов, поэтому мы в проект добавили гибкий датчик (его еще называют датчиком изгиба), который будет изменять тон в зависимости от того, насколько он согнут. Мы запрограммировали три разных тона на каждый палец, основываясь на том, насколько согнут палец (а вместе с ним и гибкий датчик). Вы можете увеличить это число если хотите производить больше тонов на кончиках пальцев.

Мы разместили все это устройство на перфорированной плате и оно легко умещается на нашей ладони, но вы также можете использовать макетную плату. Просто убедитесь в том, что ваше тело касается земли схемы в какой-нибудь точке. Когда вы все это спаяете это должно выглядеть примерно следующим образом:

Размещение элементов проекта на руке

Размещение элементов проекта на пальцах крупным планом

Мы использовали двое перчаток на пальцы чтобы закрепить провода от пары Дарлингтона и гибкие датчики в положениях, показанных на рисунке. Но вы можете использовать и свою собственную конструкцию для размещения этих элементов.

Программирование Arduino

Программа для нашего генератора тонов на основе движений пальцев достаточно прямолинейна. Мы просто должны следить за прерываниями от пар Дарлингтона и при их обнаружении проигрывать мелодию, зависящую от того насколько согнут гибкий датчик на пальце, от которого поступило прерывание. Полный код программы приведен в конце статьи, здесь же объяснены наиболее важные его части.

Примечание: эта программа работает с использованием библиотеки “pitches.h”. Поэтому удостоверьтесь в том, что вы добавили ее заголовочный файл перед тем как компилировать программу. По этой ссылке вы можете скачать заголовочный файл pitches.h.

В функции setup мы инициализируем контакты 2 и 3 на работу в режим ввода данных с использованием внутренних подтягивающих резисторов. Мы также объявим их контактами прерывания и будем вызывать функцию tone1() при прерывании на контакте 2 и функцию tone2() при прерывании на контакте 3. Эти прерывания будут возникать каждый раз когда на эти контакты будет подаваться напряжение низкого уровня, то есть будет срабатывать один из наших датчиков касания.

Внутри функции loop мы будем постоянно проверять насколько согнуты гибкие датчики. Использованный нами в проекте гибкий датчик 1, к примеру, выдает значения около 200 когда он полностью распрямлен и около 130 когда он полностью согнут, поэтому мы сопоставляем значения от 200 до 130 значениям от 1 до 3 поскольку мы должны проигрывать три различных типа мелодий (тонов) в зависимости от того насколько согнут гибкий датчик. Вы должны настроить (изменить) эти две строчки кода в зависимости от используемого вами гибкого датчика и количества мелодий (тонов), которые вы хотите генерировать при изгибе пальца.

Как мы уже говорили, функция tone1() будет вызываться при появлении прерывания на контакте 2. Внутри этой функции мы будем проигрывать мелодию, зависящую от значений на выходе гибкого датчика (степени его изгиба). Мелодии тона проигрываются с использованием Arduino’s Tone function. Ее использование мы подробно изучали в предыдущей статье на “музыкальную тематику”.

Следующая строка используется для проигрывания мелодии. С ее помощью вы можете проигрывать любую мелодию, которая находится в заголовочном файле “pitches.h”. К примеру, следующая строка проигрывает мелодию под названием NOTE_A3 на контакте 8 в течение 50 миллисекунд.

Исходный код программы

Когда аппаратная часть проекта готова загрузите код программы в плату Arduino и смонтируйте собранное устройство на своих пальцах. Убедитесь в том, что ваше тело касается земли схемы в какой-нибудь точке. Теперь просто коснитесь любого проводящего материала или вашего тела, и вы должны услышать соответствующий тон (мелодию).

Вы можете воспроизводить свою собственную мелодию или музыку, производя прикосновения на разные интервалы времени и при разных положениях ваших пальцев.

Видео в конце статьи (на английском языке) демонстрирует работу проекта. Надеемся, вы получите массу положительных эмоций когда соберете это устройство. Также можете посмотреть проект простого аудио плеера на основе платы Arduino.

Видео, демонстрирующее работу схемы

(Проголосуй первым!)
Загрузка...
33 просмотров


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *