Детское пианино на Arduino UNO
Как обычно, данный проект был подготовлен студией droidbot.store
Сегодня я научу вас, как сделать детское пианино на базе микроконтроллера Arduino UNO. Это не является серьезной поделкой, сборка оного не вызовет у вас никаких сложностей, более того, можно ничего не паять, а собрать на макетной плате. Музицировать на нем не получится, но если нажимать в нужном ритме клавиши, то услышите свою музыку, которую вы запишите.
Необходимо:
Arduino UNO
Бузер
Провода Dupont
Тактовые кнопки 12 мм.
Макетная плата
Конвертируем музыку в код
Основой этого проекта послужить сервис по переводу мелодий в формате MIDI в код, понятный для ардуино:
https://extramaster.net/tools/midiToArduino/
Суть данного сервиса проста, вы грузите музыку, получаете код, который в свою очередь загружаете на Arduino и вуаля, можно слушать любую музыку через бузер. Но есть и минусы, например память у Arduino UNO всего 32 Кб памяти и полностью записать музыку вы точно не сможете. Также нельзя слушать музыку в "многоголосье", то есть строго записываем только один инструмент.
Но нам это скучно, поэтому мы выбираем любую музыку, находим ее в формате MIDI и скачиваем. Далее загружаем на этот сервис и получаем подобный код:
Подключаем бузер на 11 пин, запускаем на Arduino и слушаем, если все работает, то идем дальше.
Подготавливаем код
Копируем наш код и вставляем сюда:
https://wiki.droidbot.store/doku.php?id=piano_parser
Получаем готовые массивы с записанными в них тональностями звука и вставляем их вместо строчек:
int myPins[] = {261, 311, 349, 311, 349};
int myPing[] = {360.0, 360.0, 270.0, 270.0, 180.0, 360.0};
В этом коде:
И загружаем его на Arduino.
Сборка
Далее подключаем все по схеме:
И все! Можно играть, главное соблюдать ритм.
Ссылка на все исходники:
https://wiki.droidbot.store/doku.php?id=%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82_%D0%B4%D0%B5%D1%82%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B8%D0%B0%D0%BD%D0%B8%D0%BD%D0%BE
Для затравки дам свою любимую мелодию, заставка Евангелиона:
int myPins[] = {261, 311, 349, 311, 349, 349, 466, 415, 391, 349, 391, 391, 466, 523, 349, 311, 466, 391, 466, 466, 523, 311, 233, 233, 311, 311, 349, 233, 233, 233, 391, 415, 391, 349, 311, 349, 391, 415, 391, 261, 261, 293, 311, 311, 293, 293, 311, 349, 415, 391, 349, 311, 391, 391, 349, 329, 349, 261, 261, 293, 293, 311, 233, 311, 311, 349, 233, 233, 233, 391, 415, 391, 349, 311, 349, 391, 415, 391, 261, 261, 293, 311, 311, 293, 293, 311, 349, 415, 391, 349, 311, 391, 391, 349, 329, 349, 391, 415, 391, 311, 311, 293, 311, 311, 293, 349, 349, 311, 293, 261, 293, 311, 311, 293, 349, 293, 261, 233, 311, 311, 293, 311, 311, 293, 349, 349, 311, 293, 311, 349, 391, 415, 391, 349, 311, 349, 391, 261, 311, 349, 311, 349, 349, 466, 415, 391, 349, 391, 391, 466, 523, 349, 311, 293, 293, 261, 293, 349, 311, 311, 261, 311, 349, 311, 349, 349, 466, 415, 391, 349, 391, 391, 466, 523, 349, 311, 466, 466, 391, 466, 466, 523, 261, 311, 349, 311, 349, 349, 466, 415, 391, 349, 391, 391, 466, 523, 349, 311, 466, 466, 391, 466, 466, 523, 311, 233, 233, 311, 311, 349, 233, 233, 233, 391, 415, 391, 349, 311, 349, 391, 415, 391, 261, 261, 293, 311, 311, 293, 293, 311, 349, 415, 391, 349, 311, 391, 391, 349, 329, 349, 261, 261, 293, 293, 311, 233, 311, 311, 349, 233, 233, 233, 391, 415, 391, 349, 311, 349, 391, 415, 391, 261, 261, 293, 311, 311, 293, 293, 311, 349, 415, 391, 349, 311, 391, 391, 349, 329, 349, 391, 415, 391, 311, 311, 293, 311, 311, 293, 349, 349, 311, 293, 261, 293, 311, 311, 293, 349, 293, 261, 233, 311, 311, 293, 311, 311, 293, 349, 349, 311, 293, 311, 349, 391, 415, 391, 349, 311, 349, 391, 261, 311, 349, 311, 349, 349, 466, 415, 391, 349, 391, 391, 466, 523, 349, 311, 293, 293, 261, 293, 349, 311, 311, 261, 311, 349, 311, 349, 349, 466, 415, 391, 349, 391, 391, 466, 523, 349, 311, 466, 466, 391, 466, 466, 523, 261, 311, 349, 311, 349, 349, 466, 415, 391, 349, 391, 391, 466, 523, 349, 311, 466, 466, 391, 466, 466, 523, 311, 311, 293, 311, 311, 293, 349, 349, 311, 293, 261, 293, 311, 311, 293, 349, 293, 261, 233, 311, 311, 293, 311, 311, 293, 349, 349, 311, 293, 311, 349, 391, 415, 391, 349, 311, 349, 391, 261, 311, 349, 311, 349, 349, 466, 415, 391, 349, 391, 391, 466, 523, 349, 311, 293, 293, 261, 293, 349, 311, 311, 261, 311, 349, 311, 349, 349, 466, 415, 391, 349, 391, 391, 466, 523, 349, 311, 466, 466, 391, 466, 466, 523, 261, 311, 349, 311, 349, 349, 466, 415, 391, 349, 391, 391, 466, 523, 349, 311, 466, 466, 391, 466, 466, 523};
int myPing[] = {360.0, 360.0, 270.0, 270.0, 180.0, 360.0, 180.0, 180.0, 90.0, 180.0, 270.0, 360.0, 360.0, 270.0, 270.0, 180.0, 360.0, 180.0, 180.0, 270.0, 1710.0, 180.0, 90.0, 360.0, 90.0, 270.0, 180.0, 90.0, 360.0, 180.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 360.0, 90.0, 90.0, 240.0, 240.0, 240.0, 360.0, 90.0, 90.0, 240.0, 240.0, 240.0, 360.0, 180.0, 240.0, 240.0, 240.0, 360.0, 360.0, 540.0, 180.0, 540.0, 180.0, 540.0, 90.0, 270.0, 180.0, 90.0, 360.0, 180.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 360.0, 90.0, 90.0, 240.0, 240.0, 240.0, 360.0, 90.0, 90.0, 240.0, 240.0, 240.0, 360.0, 180.0, 240.0, 240.0, 3.0, 237.0, 240.0, 240.0, 720.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 720.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 720.0, 360.0, 360.0, 270.0, 270.0, 180.0, 360.0, 180.0, 180.0, 90.0, 180.0, 450.0, 360.0, 360.0, 270.0, 270.0, 180.0, 135.0, 135.0, 180.0, 180.0, 90.0, 180.0, 450.0, 360.0, 360.0, 270.0, 270.0, 180.0, 360.0, 180.0, 180.0, 90.0, 180.0, 450.0, 360.0, 360.0, 270.0, 270.0, 180.0, 135.0, 135.0, 180.0, 180.0, 270.0, 450.0, 360.0, 360.0, 270.0, 270.0, 180.0, 360.0, 180.0, 180.0, 90.0, 180.0, 450.0, 360.0, 360.0, 270.0, 270.0, 180.0, 135.0, 135.0, 180.0, 180.0, 270.0, 270.0, 180.0, 90.0, 360.0, 90.0, 270.0, 180.0, 90.0, 360.0, 180.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 360.0, 90.0, 90.0, 240.0, 240.0, 240.0, 360.0, 90.0, 90.0, 240.0, 240.0, 240.0, 360.0, 180.0, 240.0, 240.0, 240.0, 360.0, 360.0, 540.0, 180.0, 540.0, 180.0, 540.0, 90.0, 270.0, 180.0, 90.0, 360.0, 180.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 360.0, 90.0, 90.0, 240.0, 240.0, 240.0, 360.0, 90.0, 90.0, 240.0, 240.0, 240.0, 360.0, 180.0, 240.0, 240.0, 3.0, 237.0, 240.0, 240.0, 720.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 720.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 720.0, 360.0, 360.0, 270.0, 270.0, 180.0, 360.0, 180.0, 180.0, 90.0, 180.0, 450.0, 360.0, 360.0, 270.0, 270.0, 180.0, 135.0, 135.0, 180.0, 180.0, 90.0, 180.0, 450.0, 360.0, 360.0, 270.0, 270.0, 180.0, 360.0, 180.0, 180.0, 90.0, 180.0, 450.0, 360.0, 360.0, 270.0, 270.0, 180.0, 135.0, 135.0, 180.0, 180.0, 270.0, 450.0, 360.0, 360.0, 270.0, 270.0, 180.0, 360.0, 180.0, 180.0, 90.0, 180.0, 450.0, 360.0, 360.0, 270.0, 270.0, 180.0, 135.0, 135.0, 180.0, 180.0, 270.0, 270.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 720.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 240.0, 720.0, 360.0, 360.0, 270.0, 270.0, 180.0, 360.0, 180.0, 180.0, 90.0, 180.0, 450.0, 360.0, 360.0, 270.0, 270.0, 180.0, 135.0, 135.0, 180.0, 180.0, 90.0, 180.0, 450.0, 360.0, 360.0, 270.0, 270.0, 180.0, 360.0, 180.0, 180.0, 90.0, 180.0, 450.0, 360.0, 360.0, 270.0, 270.0, 180.0, 135.0, 135.0, 180.0, 180.0, 270.0, 450.0, 360.0, 360.0, 270.0, 270.0, 180.0, 360.0, 180.0, 180.0, 90.0, 180.0, 450.0, 360.0, 360.0, 270.0, 270.0, 180.0, 135.0, 135.0, 180.0, 180.0, 270.0, 270.0};
Arduino & Pi
1.5K поста20.8K подписчика
Правила сообщества
В нашем сообществе запрещается:
• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)
• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском
• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)
• Рассуждать на темы политики
• Нарушать установленные правила Пикабу