Электронный метроном на Arduino

Электронный метроном на Arduino

Я решил самоизолироваться на даче. Всё бы ничего, но в суете сборов я забыл метроном, а без него репетировать дома гораздо сложнее. Не беда, соберу простой четырёхтактный метроном с помощью Arduino.

Что понадобится

    — микроконтроллер Arduino Uno
    — четыре светодиода любых цветов
    — четыре сопротивления на 220 Ом
    — пьезопищалка
    — потенциометр
    — макетная плата
    — соединительные провода «папа-папа»

Электронный метроном на Arduino

Микроконтроллер Arduino Uno рассчитан на работу с повторяющимися процессами. Основной код программы записывается в цикл loop: когда контроллер выполняет последнюю команду, он возвращается к первой строке цикла и начинает повторять программу заново. Это отлично подойдёт для создания метронома — прибора, который отсчитыват равные интервалы времени.

Метроном я соберу на макетной плате — мне не придётся паять детали, а если где-нибудь ошибусь, смогу исправится за несколько секунд.

Шаг первый. Цепочка светодиодов

Я соберу прибор, который будет отсчитывать четвертные ноты. То есть каждый такт делится на четыре четверти. Первые три такта — слабые доли — я буду отмечать зажигая жёлтые светодиоды, а на последний такт — сильную долю — зажгу красный.

Электронный метроном на Arduino

Закреплю четыре светодиода цепочкой на макетной плате. Минусы (короткие ножки) светодиодов подключу резисторами к общему минусу. Плюсы светодиодов соединю с контактами платы Arduino. Первый жёлтый светодиод подключу к 13 контакту, второй — к 12, третий — к 11 и единственный красный светодиод подключу к 10 выходу. Можно использовать и другие цифровые пины, главное, чтобы они шли друг за другом. Почему, скоро объясню.

Электронный метроном на Arduino

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

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

Признаюсь честно, я сначала написал три строки кода, а потом скопировал их ещё три раза — ведь в них меняются только номера светодиодов. А если бы их было не четыре, а пара сотен? Я человек ленивый, поэтому сразу изменю код, чтобы программа сама делала всё в цикле. Тут и пригодилось, что мы подключали светодиоды по порядку.

Программа стала более аккуратной и красивой.

Шаг второй. Добавляем звук

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

Электронный метроном на Arduino
Электронный метроном на Arduino

Самый простой способ управления пьезодинамиком — функция tone. У этой функции мы будем использовать сразу три параметра (они задаются в круглых скобках и влияют на то, как функция будет работать):
    — первый параметр — номер контакта, к которому подключён динамик,
    — второй — частота звуковых колебаний в герцах,
    — третий — продолжительность сигнала в тысячных долях секунды.

Я использую разные звуки для обозначения слабых и сильных долей, для этого проверяю какой светодиод сейчас зажигаем. Если десятый (красный), использую высокий звук, иначе — низкий. За проверку отвечает функция if (в переводе с английского «if... else» означает «если... иначе»).

Шаг третий. Добавляем выбор темпа

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

Электронный метроном на Arduino

Потенциометр — это устройство, которое меняет своё сопротивление в зависимости от положения рукоятки. Если измерить напряжение после потенциометра, можно определить на какой угол повёрнута рукоятка. Arduino умеет измерять напряжение на аналоговых контактах, их номера начинаются с буквы А. Мы уже пользовались этой возможностью, когда собирали цифровой вольтметр. Подключу потенциометр к контакту А5, он находится в правом нижнем углу платы.

Электронный метроном на Arduino

Я не буду высчитывать углы поворота потенциометра, а пойду по простому пути. Потенциометр меняет своё напряжение от 0 до 5 вольт. Плата переводит его в числа от 0 до 1023. Мне же нужны значения в четыре раза меньше — играть быстрее 255 ударов в минут я точно не буду. Поэтому уменьшу показания потенциометра в четыре раза, попросту разделю их на 4. Вот и вся математика.

У меня получилось простое, но полезное устройство. Музыканты точно оценят. Удачных репетиций и терпения вашим соседям!

P.S. Если что-то непонятно или же хочется разобраться поглубже, пишите в комментариях. Обязательно отвечу!

Электронный метроном на Arduino
Постоянный автор компании «220 вольт». Умеет собирать шкафы, пилить заборы и выпиливать двери. Пишет буквы и снимает видео.