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

Управление воспроизведением музыки с пульта: Простой проект на Arduino

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

Arduino UNO 1
Пульт ДУ 1
IR-приёмник (универсальный) 1
Зуммер 1
LCD-дисплей 16x2 (белый на синем) 1
Потенциометр поворотный 1
Резистор 221 Ом 1

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

О проекте

Привет, сообщество Hackster! Я Симоне Адобс, и это мой второй проект на этом сайте.

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

Некоторые пояснения к коду:

Все мелодии записаны следующим образом:

void melody_example() { 
  lcd.clear(); 
  lcd.setCursor(0,0); 
  lcd.print("Название песни"); 
  delay(1000); 
  lcd.clear(); 
  nota_mi(duration,pause); // нота Ми
  nota_do(duration,pause); // нота До
  lcd.clear(); 
  delay(100); 
  Reset_AVR(); // Эта команда перезагружает Arduino без нажатия кнопки
}

Для использования команды Reset_AVR() необходимо добавить в начало скетча:

#include <avr/io.h> 
#include <avr/wdt.h> 
#define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {}

Так Arduino определяет, какую мелодию воспроизводить:

if (result==12495) { // 12495 — код кнопки 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 duration, int pause) { 
  shut(); // Вызывает функцию остановки (описана ниже)
  lcd.setCursor(0, 0); 
  lcd.print("Example "); // Выводит название ноты
  NewTone(11,262,duration); // 11 — пин зуммера, 262 — частота ноты
  delay(pause); // Пауза в миллисекундах
}

Хотите остановить мелодию во время воспроизведения?

Никаких проблем! Благодаря функции 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 к приёму следующего кода
}

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

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

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

Код

Воспроизведение мелодии (C/C++)

Скопируйте этот код в Arduino IDE:

#include <LiquidCrystal.h> 
#include <IRremote.h> 
#include <NewTone.h> 
#include <avr/io.h> 
#include <avr/wdt.h> 
#define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {} 
#define buzzer 11 
LiquidCrystal lcd(9, 8, 7, 6, 5, 4); 
int result; 
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("-----Choose-----"); 
  lcd.setCursor(0,1); 
  lcd.print("----A Song!!----"); 
  pinMode(buzzer, OUTPUT); 
  irrecv.enableIRIn(); 
} 

void loop() { 
  if (irrecv.decode(&results)) { 
    result=results.value, HEX; 
    Serial.println(result); 
    if (result==12495) { ode(); } 
    else if (result==6375) { london(); } 
    else if (result==31365) { fur(); } 
    else if (result==4335) { pirate(); } 
    irrecv.resume(); 
  } 
  delay(100); 
} 

// Функции мелодий: Fur Elise, London Bridge, Ode to Joy, He's a Pirate
// ... (полный код доступен в исходнике)

Схемы

Файл схемы: canzoni_con_tastiera_fQS3978roa.fzz

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

  1. Перехват команд ИК-пульта на Raspberry Pi без LIRC: подход через Python UART
  2. Создание игры в реальном времени на Arduino Nano с гироскопом MPU-6050 и OLED-дисплеем
  3. Камера охраны с детектором движения на ESP32-CAM и отправкой фото в Discord
  4. Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
  5. Создание рулетки на 37 светодиодов с Arduino Nano
  6. Самодельный пульт от ТВ на Arduino с 3D-корпусом и питанием от батарейки
  7. Мониторинг температуры дома из любой точки через Arduino IoT Cloud
  8. Мини-аркада на ATtiny85: Snake — ручная OLED-консоль своими руками
  9. Портативный дальномер на Arduino Nano: HC-SR04, питание 18650, 3D-корпус
  10. Управление светодиодом Arduino через Cortana по Bluetooth в Windows 10