Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Воспроизведение музыки с помощью пульта ДУ

Компоненты и расходные материалы

Arduino UNO
× 1
Удаленное управление
× 1
ИК-приемник (общий)
× 1
Зуммер
× 1
Стандартный ЖК-экран Adafruit - 16x2, белый на синем
× 1
Поворотный потенциометр (общий)
× 1
Резистор 221 Ом
× 1

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Привет, сообщество хакстеров!

Я Симона Адобс, и это мой второй проект, который я опубликовал на этом сайте.

Логика этого проекта очень проста:

  • Возьмите пульт дистанционного управления и выберите мелодию, которую хотите воспроизвести;
  • Arduino с зуммером будет воспроизводить мелодию;
  • На ЖК-экране вы можете увидеть проигранную музыкальную ноту.

Некоторое объяснение кода:

Это пример мелодии, все мелодии записываются так:

  void melody_example () {lcd.clear (); lcd.setCursor (0,0); lcd.print («Название песни»); задержка (1000); lcd.clear (); nota_mi (продолжительность, пауза); // музыкальная нота nota_do (длительность, пауза); // музыкальная нота lcd.clear (); задержка (100); Reset_AVR (); // Эта команда используется для сброса Arduino без нажатия какой-либо кнопки}  

Чтобы использовать команду «Reset_AVR ()», вы должны поместить этот код в верхнюю часть скетча:

  #include  #include  #define Reset_AVR () wdt_enable (WDTO_30MS); в то время как (1) {}  

Вот как Arduino понимает, какую мелодию нужно проигрывать:

  if (result ==12495) {// 12495 - это код, который мой Remote отправляет, когда вы нажимаете кнопку 1 melody_1 (); } else if (result ==6375) {// 6375 - это код кнопки 2 melody_2 (); } else if (result ==31365) {// 31365 - это код кнопки 3 melody_3 (); } else if (result ==4335) {// 4335 - это код кнопки 4 melody_4 (); }}  
  void nota_example (int длительность, int пауза) {shut (); // Эта команда вызывает функцию, которую я объясню ниже lcd.setCursor (0, 0); lcd.print («Пример»); // Выводим название музыкальной ноты NewTone (11,262, продолжительность); // 11-> Вывод зуммера - 262-> задержка кода заметки (пауза); // ждем несколько миллисекунд}  

Вы хотите остановить мелодию, когда она играет?

Нет проблем, благодаря функции "shut ()" вы можете останавливать мелодию каждый раз, когда захотите.

Это функция "shut ()":

  void shut () {if (irrecv.decode (&results)) {// Получение кода нажатой кнопки result =results.value, HEX; // Сохраняем полученный код Serial.println (result); if (result ==- 23971) {// - 23971 на моем пульте дистанционного управления представляет кнопку выключения Reset_AVR (); // Сбрасываем Arduino}} irrecv.resume (); // Разрешает Arduino получать новый код от Remote}  

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

Хорошего дня ...

Симона из Италии <3

Код

  • Воспроизвести мелодию
Воспроизвести мелодию C / C ++
Скопируйте этот код в Arduino IDE
 #include  #include  #include  #include  #include  #define Reset_AVR () wdt_enable (WDTO_30MS); while (1) {} #define buzzer 11 LiquidCrystal lcd (9, 8, 7, 6, 5, 4); int результат; int RECV_PIN =2; IRrecv irrecv (RECV_PIN); decode_results results; void setup () {Serial.begin (9600); lcd.begin (16,2); lcd.setCursor (0,0); lcd.print ("----- Выбрать -----"); lcd.setCursor (0,1); lcd.print ("---- Песня !! ----"); pinMode (зуммер, ВЫХОД); irrecv.enableIRIn ();} void loop () {if (irrecv.decode (&results)) {результат =результаты.значение, HEX; Serial.println (результат); если (результат ==12495) {ode (); } иначе, если (результат ==6375) {Лондон (); } иначе, если (результат ==31365) {мех (); } иначе, если (результат ==4335) {пират (); } irrecv.resume (); } задержка (100);} пустота мех () {lcd.clear (); lcd.setCursor (0,0); lcd.print («Меховая Элиза»); задержка (1000); lcd.clear (); nota_mi (150,200); nota_rez (150,200); nota_mi (150,200); nota_rez (150,200); nota_mi (150,200); nota_si (150,200); nota_rez (150,200); nota_do (150,200); nota_la (450 300); nota_do (150,200); nota_mi (150,200); nota_la (150,200); nota_si (450 300); nota_mi (150,200); nota_solz (150 200); nota_si (150,200); nota_do (450 300); nota_mi (150,200); nota_mi (150,200); nota_rez (150,200); nota_mi (150,200); nota_rez (150,200); nota_mi (150,200); nota_si (150,200); nota_rez (150,200); nota_do (150,200); nota_la (450 300); nota_do (150,200); nota_mi (150,200); nota_la (150,200); nota_sol (450,300); nota_mi (150,200); nota_do (150,200); nota_si (150,200); nota_la (600800); nota_mi (150,200); nota_rez (150,200); nota_mi (150,200); nota_rez (150,200); nota_mi (150,200); nota_si (150,200); nota_rez (150,200); nota_do (150,200); nota_la (450 300); nota_do (150,200); nota_mi (150,200); nota_la (150,200); nota_si (450 300); nota_mi (150,200); nota_solz (150 200); nota_si (150,200); nota_do (450 300); lcd.clear (); задержка (100); Reset_AVR ();} void london () {lcd.clear (); lcd.setCursor (0,0); lcd.print («Лондонский мост»); lcd.setCursor (0,1); lcd.print («Падает»); задержка (1000); lcd.clear (); nota_sol (450 600); nota_la (150,200); nota_sol (300400); nota_fa (300400); nota_mi (300400); nota_fa (300400); nota_sol (600 800); nota_re (300400); nota_mi (300400); nota_fa (600800); nota_mi (300400); nota_fa (300400); nota_sol (600 800); nota_sol (450 600); nota_la (150,200); nota_sol (300400); nota_fa (300400); nota_mi (300400); nota_fa (300400); nota_sol (600 800); nota_re (600 800); nota_sol (600 800); nota_mi (300400); nota_do (450 600); lcd.clear (); задержка (100); Reset_AVR ();} недействительный од () {lcd.clear (); lcd.setCursor (0,0); lcd.print («Ода радости»); задержка (1000); lcd.clear (); nota_mi (300400); nota_mi (300400); nota_fa (300400); nota_sol (300400); nota_sol (300400); nota_fa (300400); nota_mi (300400); nota_re (300400); nota_do (300400); nota_do (300400); nota_re (300400); nota_mi (300400); nota_mi (450 600); nota_re (150,200); nota_re (600 800); nota_mi (300400); nota_mi (300400); nota_fa (300400); nota_sol (300400); nota_sol (300400); nota_fa (300400); nota_mi (300400); nota_re (300400); nota_do (300400); nota_do (300400); nota_re (300400); nota_mi (300400); nota_re (450 600); nota_do (150,200); nota_do (600 800); nota_re (300400); nota_re (300400); nota_mi (300400); nota_do (300400); nota_re (300400); nota_mi (150,200); nota_fa (150 200); nota_mi (300400); nota_do (300400); nota_re (300400); nota_mi (150,200); nota_fa (150 200); nota_mi (300400); nota_re (300400); nota_do (300400); nota_re (300400); nota_sol (600 800); nota_mi (300400); nota_mi (300400); nota_fa (300400); nota_sol (300400); nota_sol (300400); nota_fa (300400); nota_mi (300400); nota_re (300400); nota_do (300400); nota_do (300400); nota_re (300400); nota_mi (300400); nota_re (450 600); nota_do (150,200); nota_do (600 800); lcd.clear (); задержка (100); Reset_AVR ();} недействительный пират () {lcd.clear (); lcd.setCursor (0,0); lcd.print («Он пират»); задержка (1000); lcd.clear (); nota_mi (150,200); nota_sol (150,200); nota_la (300400); nota_la (300400); nota_la (150,200); nota_si (150,200); nota_do (300400); nota_do (300400); nota_do (150,200); nota_re (150,200); nota_si (300400); nota_si (300400); nota_la (150,200); nota_sol (150,200); nota_sol (150,200); nota_la (450 600); nota_mi (150,200); nota_sol (150,200); nota_la (300400); nota_la (300400); nota_la (150,200); nota_si (150,200); nota_do (300400); nota_do (300400); nota_do (150,200); nota_re (150,200); nota_si (300400); nota_si (300400); nota_la (150,200); nota_sol (150,200); nota_la (300400); задержка (400); nota_mi (150,200); nota_sol (150,200); nota_la (300400); nota_la (300400); nota_la (150,200); nota_do (150,200); nota_re (300400); nota_re (300400); nota_re (150,200); nota_mi (150,200); nota_fa (300400); nota_fa (300400); nota_mi (150,200); nota_re (150,200); nota_mi (150,200); nota_la (450 600); nota_la (150,200); nota_si (150,200); nota_do (300400); nota_do (300400); nota_re (300400); nota_mi (150,200); nota_la (450 600); nota_la (150,200); nota_do (150,200); nota_si (300400); nota_si (300400); nota_do (150,200); nota_la (150,200); nota_si (900,1200); nota_si (300400); nota_si (300400); nota_do (150,200); nota_la (150,200); nota_si (900,1200); nota_si (300400); nota_si (300400); nota_la (150,200); nota_sol (150,200); nota_la (600800); lcd.clear (); задержка (100); Reset_AVR ();} void shut () {if (irrecv.decode (&results)) {результат =результаты.значение, HEX; Serial.println (результат); если (результат ==- 23971) {Reset_AVR (); }} irrecv.resume ();} void nota_do (длительность int, пауза int) {shut (); lcd.setCursor (0, 0); lcd.print («Делай»); NewTone (11 262, продолжительность); // DO delay (пауза); } void nota_doz (интервал длительности, интервал паузы) {shut (); lcd.setCursor (0, 0); lcd.print ("Сделать #"); NewTone (11 277, продолжительность); // DO delay (пауза); } void nota_re (интервал длительности, интервал паузы) {закрытие; lcd.setCursor (0, 0); lcd.print («Ре»); NewTone (11 294, продолжительность); // RE delay (пауза); } void nota_rez (интервал длительности, интервал паузы) {закрытие; lcd.setCursor (0, 0); lcd.print ("Re #"); NewTone (11311, продолжительность); // RE delay (пауза); } void nota_mi (интервал длительности, интервал паузы) {shut (); lcd.setCursor (0, 0); lcd.print («Ми»); NewTone (11330, продолжительность); // Задержка MI (пауза); } void nota_fa (интервал длительности, интервал паузы) {shut (); lcd.setCursor (0, 0); lcd.print ("Fa"); NewTone (11 349, продолжительность); // Задержка FA (пауза); } void nota_faz (интервал длительности, интервал паузы) {shut (); lcd.setCursor (0, 0); lcd.print ("Fa #"); NewTone (11370, продолжительность); // Задержка FA (пауза); } void nota_sol (интервал длительности, интервал паузы) {shut (); lcd.setCursor (0, 0); lcd.print («Соль»); NewTone (11,392, продолжительность); // задержка SOL (пауза); } void nota_solz (интервал длительности, интервал паузы) {shut (); lcd.setCursor (0, 0); lcd.print ("Sol #"); NewTone (11415, продолжительность); // задержка SOL (пауза); } void nota_la (интервал длительности, интервал паузы) {shut (); lcd.setCursor (0, 0); lcd.print ("Ла"); NewTone (11440, продолжительность); // задержка ЛА (пауза); } void nota_laz (интервал длительности, интервал паузы) {shut (); lcd.setCursor (0, 0); lcd.print ("Ла #"); NewTone (11 466, продолжительность); // задержка ЛА (пауза); } void nota_si (интервал длительности, интервал паузы) {shut (); lcd.setCursor (0, 0); lcd.print («Си»); NewTone (11 494, продолжительность); // задержка SI (пауза); } 

Схема

canzoni_con_tastiera_fQS3978roa.fzz

Производственный процесс

  1. Использование ИК-пульта дистанционного управления с Raspberry Pi без LIRC
  2. Игра с гироскопом Arduino с MPU-6050
  3. Камера безопасности Discord с ESP32
  4. Цифровые игральные кости Arduino
  5. Рулетка DIY 37 LED
  6. Пульт дистанционного управления для телевизора с питанием от батареи и футляр, напечатанный на 3D-принтере
  7. Узнавайте температуру своего дома откуда угодно с помощью Arduino Cloud!
  8. Мини-аркада ATtiny85:Змейка
  9. Переносимый детектор дальности
  10. Управляйте своим светодиодом с помощью Cortana