Star wars music arduino

Мелодии для Ардуино. Проекты. Ардуино

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

В предыдущем уроке мы научились генерировать звук. Посмотрите этот урок, если уже забыли его или пропустили. Сегодня мы будем использовать его опять.

Для выполнения этого урока нам понадобятся

  • Ардуино Uno
  • Макетная плата
  • Перемычки
  • 1 резистор номиналом 150 Ом
  • Потенциометр 10 кОм
  • Динамик 8 Ом
  • Кабель USB

Программа и схема

Соберем ту же схему из предыдущего урока. Она довольно проста.

Принципиальная схема подключения динамика к ардуино

Мы уже знаем, что такое звук, как работает динамик и, в конце концов, знаем как извлечь звук из Ардуино.

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

Динамик подключается к 9 пину через сопротивление. И, к тому же, не забудьте подключить файл с нотами. Он должен находиться рядом с файлом программы в одной папке.

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

Другие мелодии

Посмотрим какие еще мелодии можно сыграть на Ардуино.

Главная тема супер братьев Марио

Имперский марш из Звездных войн

В лесу родилась елочка

Заключение

Как видите, на Ардуино можно сыграть почти любую мелодию. Но на этом музыкальные возможности Ардуино не исчерпываются. И если подключить дополнительные модули, то можно проиграть и mp3 аудио файлы. В будущем мы попробуем это сделать.

Источник

Star Wars on a Buzzer

Today we will make a buzzer play the Star Wars theme.

NOW LETS PLAY STAAAAARRR WARRRSSS.

CODEC/C++
arduino_buzzer_XjouGXL30R.png

Please log in or sign up to comment.

Author

HiHiHiHiiHiiIiH
  • 3 projects
  • 2 followers

Additional contributors

Published on

Members who respect this project

Table of contents

Similar projects you might like

This project will guide you to set up an alarm system using a motion detector.

Buzzer Alarm System With Help Of Arduino

  • 93,457 views
  • 14 comments
  • 51 respects

A novel variant of the Arduino Fade sketch

DC piezo buzzer volume control

Project tutorial by glennedi

Create a light-sensitive, star-shaped RGB LED nightlight for your kids, your family, your friends, or even yourself!

Kids RGB LED Star Nightlight

You will learn how to make a servo move with an ir remote control and the degree measurement you will see on the lcd display!

IR servo with LCD display and buzzer ALLARM

Project tutorial by razangry1731

Play Super Mario Bros theme song on a piezo buzzer! It’s very simple and fun, and great as a beginner Arduino project.

Super Mario Theme Song w/ Piezo Buzzer And Arduino!

Embroidering a freaking laaaaaaseeeerrrrr into clothing

Perfect for the holiday season! And it’s so bright that it’s visible in day light.

Laser, Robe, Star Wars?! — Versalume + Adafruit Gemma

Project tutorial by Kitty Yeung

Good to see you again

Or connect with your social account:

Источник

Музыкальный дверной звонок в стиле Star Wars на Arduino

Всем привет, не так давно я рассказал, да и показал на видео, как можно прошить Attiny13 при помощи Arduino, а теперь покажу практическое применение этому.

Скажу сразу, фьюзы, прошивку в виде hex-файла, код на Си, скетч для Arduino IDE, файлы для Proteus 7 можно скачать в конце статьи.

Ну, что уж тянуть, покажу как работает:

Давно хотел себе такой музыкальный дверной звонок, чтобы при нажатии на кнопку играл марш империи(Imperial March or Darth Vader’s Theme) из «Звёздных войн», очень нравится эта мелодия.

Как видно из названия видео выше, главный компонент устройства — микроконтроллер Attiny13, его применение сделало возможным сделать размеры платы в несколько раз меньше по размерах чем спичечной коробок:

А вот уже всё подключённое:

Диапазон питания примерно от 2 В до 6 В, то есть, от двух до четырех батареек формата AA, хотя в идеале бы обеспечить напряжение 3-4 В, то есть для этих целей идеально подходит литий ионный аккумулятор от мобильника или же аккумулятор формата 18650, правда желательно чтобы он был с защитой, так как я пока не реализовал никакой защиты от глубокого разряда.

Ну что же, скажу пару слов по схемотехнике:

Схема выглядит вот так(файлы Proteus прилагаются в конце статьи, можно даже ничего не собирать на макетке):

Так как микроконтроллер не может самостоятельно вытянуть достаточную громкость, для того чтобы было слышно звонок по всему доме, я добавил NPN транзистор 2N3904, довольно таки распространенный транзистор, в принципе может подойти любой транзистор который потянет динамик, в моём случае транзистор рассчитан на 100 мА.
При использовании 3-х батареек формата AA транзистор немножко грелся, при использовании двух — громкость осталась на приличном уровне но уже транзистор был слегка тёплым.
Резистор R2 — стандартная обвязка для микроконтроллера, служит защитой от случайных перезагрузок микроконтроллера, в принципе работать должно и без него, резистор R1 служит для ограничения тока на базе транзистора.
На фото видно ещё защитный диод, защищает он от невнимательности, а именно от переполюсовки, в моём случае, переполюсовка очень быстро выведет микроконтроллер из строя, причём вполне возможны как пиротехнические так и звуковые эффекты. Кстати, на схеме ниже я забыл указать его, подойдёт любой диод который рассчитан на напряжение от 10 В и ток от 200 мА, ставиться последовательно входу платы, или по минусу или по плюсу, у меня по минусу.
Динамик от старого Dial up модема Zyxel, кстати, про Dial up модемы этой фирмы есть один известный анекдот:

Сидят два хакера, и в комнату заходит кот. Один хакер спрашивает:
— Твой кот?
— Да, мой. Зухель зовут!
— Почему Зухель?
— Вот смотри. Берет веник, тычет им в кота и говорит: «Зухель, коннект. » Кот:
— Пшшшшшшшшшшшшшш!

Код, скажу сразу, нагуглил, точней нашёл на просторах ютуба, вот собственно само видео:

Под видео есть ссылка на код, вот он:

Как Вы можете видеть, есть два массива frequences — в переводе из английского частота и durations — длительность, всё данные типа word, PROGMEM — данные хранятся во флеш-памяти микроконтроллера(без использования библиотеки pgmspace.h работать не будет) ну и есть генератор частоты buzz() который принимает три параметра — пин, на котором будет генерироваться частота, второй — частота в герцах, третий — длительность в миллисекундах.
Данный код должен быть Arduino совместимым и работать даже на Arduino Uno, Arduino Nano или же Arduino Pro Mini ну и и других дуинах.

Как Вы могли слышать на видео, звучание моего видео немного отличается от второго видео, дело в том, что я немного изменил длительность нот и в три раза популярным методом «научного тыка», поднял частоту, так как такой маленький динамик как у меня плохо воспроизводит те частоты что были изначально, и добавил кнопку, какой же дверной звонок без кнопки?

Как видите, добавления срабатывания при нажатии на кнопку превысило 1024 байта и пришлось вставлять кусочки кода Си чтобы уместиться в attiny13.
Частоту поднял строках buzz(PIN_BUZZER, pgm_read_word(&(frequences[i])) * 3, 2 * pgm_read_word(&(durations[i]))); тем самим умножив генерируемые частоты, как Вы поняли на три, это чисто мой каприз, можете ничего не умножать вообще.

Если Вы опытный ардуинщик, то думаю заметите в коде что я сделал программную подтяжку PULLUP резистора к порту PB4.
Для тех кто не знает делается это так:
Выставляем порт на вход и подаём на него логическую единицу. Теперь на порту будет напряжение, примерно равно напряжению питания, если этот порт закоротить на землю то он изменит своё состояние с логической единицы на логический ноль, причём микроконтроллер при этом не будет страдать, так как используется внутренний резистор, номинал которого 10-100 кОм.
Сделал я это чисто для экономии размеров платы, можно было просто подпаять резистор на 10 кОм к плюсу питанию и нужному порту, при нажатии на кнопку мы «притягиваем порт к земле» и на нём будет логической ноль.

Добавляю код на чистом AVR-С для тру AVR’щиков:

Вроде как должен компилироваться без проблем, а вот при использовании этого кода в Arduino IDE почему-то размер hex файла как минимум удваивается «Размер скетча в двоичном коде: 1 986 байт (из 1 024 байт максимум)».
Как мне удалось выяснить всё это из за использования _delay_us(*); хотя ардуиновская функция delayMicroseconds(*); по сути делает то же самое, думаю это недочёт файлов ядра для тини13, вот ветка на буржуйском форуме ардуино откуда я и взял файлы ядра, правда самую малость доработал под себя, ссылка на доработанные мною файлы ядра есть в статье про прошивку Attiny13 при помощи Arduino.
Если кто-то поможет разобраться с этим багом буду только рад, ведь чисто теоретически Arduino IDE должна без проблем проглатывать С-шний код.

Ну и пару слов по прошивке — на первом видео запускал тиньку на частоте 1.2 мГц, как по мне, так 1.2 миллиона операций вполне достаточно чтобы играть любимую мелодию и при этом кушать совсем не много, кстати hex-файл скомпилирован именно под эту частоту.
Вот фьюзы из калькулятора фьюзов:

Теперь, каждый кто имеет AVR программатор сможет повторить это устройство.

Как было обещано в начале статьи вот все нужные файлы.

И напоследок — «Да прибудет с Вами сила».

Хаброюзер SparF сделал то, что я ленился сделать всё это время, а именно довести до ума энергопотребление и сделать проигрывание при нажатии на кнопку PB1.
Теперь после проигрывания мелодии МК не «молотит» дальше в ожидании нажатия кнопки а засыпает и при каждом нажатии на кнопку он просыпается, проигрывает любимый нами Имперский марш и засыпает дальше, потребляя при этом практически ничего, батареек хватит на десяток лет в таком режиме потребления.

Код без проблем компилируется в Arduino IDE.

Источник

DIY: Световой меч со звуком

Всем привет! Мне с детства нравится вселенная Звездных Войн. Когда мне было 7 лет я столько раз пересматривал эпизоды 4-6, что мог в мельчайших подробностях пересказать их содержимое.

Бесспорно самые яркие впечатления от фильмов – битвы на световых мечах. Два года назад я наткнулся в интернете на краткую статью о выборе светового меча в подарок, заинтересовался и изучил эту тему в подробностях.

В конце года выходит 8 эпизод, 4 Мая не за горами и в предверии международного дня Звездных Войн я решил написать эту статью.

Под катом я поделюсь информацией о производителях световых мечей и расскажу о создании бюджетного меча со звуком на базе Arduino.

Сейчас в интернете существует много коммерческих производителей световых мечей, самые достойные внимания на мой взгляд:

● ● ● Genesis Custom Sabers — Очень качественные рукоятки на заказ, цена за элитный кастомный меч со звуком варьируется в районе 1500-3000 USD.

● ● ● Saber Forge – большой выбор, цены более демократичные, но и мечи не столь аутентичны как в Genesis CS. Цена на меч со звуком около 300 USD.

● ● ● Ultrasabers – один из самых гуманных магазинов в отношении цен. Меч с базовым звуком стоит около 160 USD. Можно заказывать отдельные составные части для своего проекта.

● ● ● The Custom Saber Shop – сайт с магазином и конструктором для сборки своего меча.

Есть и другие производители световых мечей, например ● ● ● Makoto Tsai, который делает самые яркие мечи на базе самодельных светодиодных лент.

Но что делать если вам не хочется тратить много денег, а световой меч очень хочется? Выход один – накопить 5,000 рублей и сделать меч самому.

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

В описании процесса создания меча я постараюсь описать все основные сложности.

Итак, приступим. Вот список всего что я использовал:

    Arduino Pro micro 5v

250 рублей на Ali
Звуковой модуль WT588D-U

250 рублей на Ali
Step-up 3-5В

100 рублей на Ali
Динамик Ø28мм, 8Ом, 2Вт

40 рублей на Ali
Акселерометр ADXL335

200 рублей на Ali
N-MOSFET IRF530N x2

40 рублей на Амперке
Светодиод Luxeon rebel 3Вт

70 рублей на Ali
Линза для светодиода 8°

50 рублей на Ali
Аккумулятор CR123A х2 3.7В

400 рублей на Ali

  • Батарейка Крона 9в для питания Arduino
  • Держатель для аккумулятора

    15 рублей на Ali
    Антивандальная кнопка

    100 рублей на Ali
    Тумблер

    50 рублей на Ali
    Белая поликарбонатовая трубка 1”

    800 рублей в Москве (магазинов много, они есть в гугле)

  • Труба ПВХ для изготовления рукояти
  • Вам так же понадобятся провода, винт для фиксации поликарбонатовой трубы в рукоятке и колпачок для поликарбонатовой трубки с отражателем.

    Колпачок с отражателем я заказывал в Custom saber shop от стоит там 7 долларов, доставка для малогабаритных товаров стоит 14 долларов.

    Еще нужно будет где-то раздобыть звуки для меча, обычно это набор из звуков включения/выключения, шума работы (hum), звуки взмахов (swing), звуки столкновений (clash).

    Я покупал набор звуков на сайте Saberfont за 7 долларов, но я уверен что можно найти бесплатные звуки.

    Итого по компонентам выходит около 5,000 рублей если покупать звуки, если нет, то в районе 4,000.

    Существует два основных вида подсветки «лезвия» — один мощный светодиод у основания поликарбонатовой трубки, свет которого отражается колпачком на конце трубки и второй тип — самодельная сегментированая светодиодная лента. Сегменты нужны для плавного включения меча, как в фильмах.

    К примеру, Makoto в своих самых ярких мечах использует несколько сегментированных лент.

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

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

    Предлагаю начать сборку прототипа с настройки звука.

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

    Перед загрузки файлов на WT, мне пришлось их немного отредактировать, для этого можно использовать бесплатную программу Audacity.

    Нужно по очереди открыть каждый файл, выделить область со звуком (у меня в конце каждого файла было по несколько секунд тишины), в левом нижнем углу экрана нужно задать частоту от 16000 до 22000 Khz. Если частота более 22000, WT не даст загрузить файл. Далее Export selected – 16 bit.
    Для загрузки файтлов на WT588D, вам понадобится программа для загрузки звуков от производителя модуля — Waytronic (работает только под Windows, я запускал на MAC через BootCamp).

    Нужно запустить ПО и выбрать в настройках English. В WT588D существуют несколько режимов работы, я выбрал One-line mode, т.к. он требует минимума пайки, модуль обменивается данными с Arduino через один пин.

    Рабочее поле разделено на 3 части, слева – список загруженных на модуль файлов, по середине – список плейлистов, справа – список файлов в плейлисте.

    Для загрузки файлов нужно щелкнуть правой кнопкой мыши по списку загруженных файлов и выбрать Load – найти и выбрать обработанный в Audacity звуковой файл. Повторить для всех файлов.

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

    Номера плейлистов мы будем вызывать далее в нашем скетче. После загрузки звуков и подготовки плейлистов нужно подключить питание к WT, подключить динамик, и соединить Data пин WT c Arduino. Так же подключить к Arduino кнопку для включения/выключения света/звука и светодиод через MOSFET.

    Вот моя схема подключения:

    Я питаю WT от отдельного аккумулятора 3.7В через MOSFET, используя step-up до 5в, в таком случае получаю максимальную громкость на выходе.

    Для начала нужно прописать все что будет использовано в скетче:

    Для работы WT, в скетче нужно декларировать комманду WT_Send_Command(*), для этого добавьте в конец скетча следующий код:

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

    Если опыта программирования у вас нет, для лучшего понимания кода, рекоммендую ознакомиться со следующими материалами:

    Вот мой код для распознавания состояния кнопки и включения/выключения эффектов:

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

    Основная часть скетча готова, теперь подключим акселерометр и заставим WT воспроизводить звуки взмахов.

    ADXL335 достаточно простой в использовании, для него не нужно подключать какие-либо библиотеки. Вот схема подключения:

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

    Акселерометр я рекоммендую размещать как можно ближе к одному из концов рукоятки.

    Все, прототип готов. Пора создать рукоять и поместить в нее всю начинку.

    Рукоятку я делал из ПВХ трубы, вставка для лезвия диаметром: 28мм.

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

    В изготовлении рукояти из ПВХ вы ограничены только вашей фантазией, могу лишь дать один совет — перед покраской обработайте поверхность трубы мелкой наждачкой, иначе краска будет плохо держаться.

    Вот первый вариант моей рукояти, в крышке я высверлил отверстия и разместил динамик, а лезвие фиксируется в трубе четырьмя винтами:

    Я не включал в свой меч эффект столкновений (clash), возможно наверстаю в следующий раз. Но если вы захотите включить clash, вам понадобится датчик вибрации или настройка акселерометра под распознавание коротких ускорений. Если у кого-то получится настроить акселерометр, не поленитесь поделиться кодом, я включу его в статью с упоминанием вас как автора.

    Вот небольшой тест меча ночью на улице:

    update:
    Я доделал рукоять и поработал над синхронизацией звуков, добавил звук столконовения (clash) вот обновленное видео:

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

    Обязательно делитесь своими результатами, очень интересно посмотреть что получится у вас!

    Всем спасибо за внимание! И да пребудет с вами сила!

    Источник

    Adblock
    detector