Оглавление:
- Запасы
- Шаг 1: Установка ИК-датчиков
- Шаг 2: Регулировка диапазона ИК-датчика и покрытия черными рулонами Carsheet
- Шаг 3: Подключение динамика к Arduino
- Шаг 4: Подключение модуля инфракрасного датчика и сенсорного переключателя
- Шаг 5: код микроконтроллера с использованием Arduino Ide
- Шаг 6: Видео о работе над проектом
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Это модернизированная версия предыдущего проекта воздушного пианино ». Здесь я использую динамик JBL в качестве выхода. Я также добавил сенсорную кнопку для изменения режимов в соответствии с требованиями. Например, режим Hard Bass, нормальный режим, режим высокочастотных мелодий. Я покажу вам, как подключить динамик к Arduino. Обычно пианино, будь то электрическое или механическое, работает на простом механизме нажатия кнопки. Но вот поворот: мы могли бы просто избавиться от необходимости использовать клавиши в пианино, используя некоторые датчики. И инфракрасные датчики приближения лучше всего подходят для этой цели, потому что они просты в использовании, а также занимают всего один цифровой вывод на плате микроконтроллера. Кроме того, эти датчики являются одними из самых дешевых датчиков на рынке.
Запасы
1) 10 ИК-датчик приближения
2) Arduino uno / mega
3) Динамик с аудиоразъемом
4) кнопка (в моем случае сенсорная кнопка)
5) Основание для крепления датчиков (акриловый лист)
6) Черный картон / Черная лента для виолончели
7) саморезы / клей
8) Провода
Шаг 1: Установка ИК-датчиков
Модули инфракрасных датчиков имеют монтажное отверстие в центре. Вы можете использовать отверстие для крепления датчика с помощью плотного винта или просто приклеить его клеем. Я использовал акриловый лист в качестве основы и просверлил отверстия в акриле с правильной разметкой, где каждое отверстие было на расстоянии 2 см друг от друга. Не располагайте датчики слишком близко друг к другу, так как это может испортить впечатление от игры на пианино.
Шаг 2: Регулировка диапазона ИК-датчика и покрытия черными рулонами Carsheet
Используйте потенциометр на сенсорном модуле, чтобы отрегулировать диапазон, подходящий для ваших клавиш пианино. Теперь установите черные рулоны картона на нем, светодиод модуля датчика и фотодиод, как показано на рисунке. Это сделано для предотвращения обнаружения нежелательного препятствия в другом направлении. Мы хотим обнаруживать пальцы только спереди. И мы используем черный лист для карточек, потому что черный поглощает все длины волн и даже инфракрасные.
Шаг 3: Подключение динамика к Arduino
Подключите один конец аудиоразъема к динамику, другой конец обычно состоит из 3 частей. Две верхние части предназначены для левого и правого входов, а самая нижняя часть - заземление. Итак, подключите заземление аудиоразъема к земле Arduino / микроконтроллера и подключите любую правую / левую часть аудиоразъема к цифровому контакту микроконтроллера. Обратитесь к изображению выше, чтобы получить хорошее представление. Включите динамик, и ваш аудиовыход готов.
Шаг 4: Подключение модуля инфракрасного датчика и сенсорного переключателя
Я использую сенсорный переключатель для переключения режимов фортепиано ?. Вместо этого вы можете использовать простой кнопочный переключатель. Подключите положительный полюс сенсорного переключателя к Arduino + 5V, а отрицательный - к земле. Подключите выход датчика касания к входу аналогового вывода Arduino. Подключите все положительные клеммы ИК-датчиков с помощью провода и припоя (необязательно). Также подключите все контакты заземления всех датчиков. Наконец, вам нужно подключить выходные контакты датчика Ir к цифровым контактам платы микроконтроллера. В моем случае это Arduino uno. Помните, что при обнаружении препятствия выходной сигнал датчика низкий.
Шаг 5: код микроконтроллера с использованием Arduino Ide
В этом коде нам сначала нужно определить контакты для входа инфракрасного датчика, входа сенсорной кнопки и выхода динамика. После этого мы создаем вложенный массив разных частот разных режимов. Используем tone (); функция Arduino ide для отправки нашего вывода на динамик. Мы используем noTone (); функция, чтобы остановить звук. Я использовал только условный оператор в цикле, поэтому его легко понять и он отлично работает.