亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

用遥控器播放音乐

组件和用品

Arduino UNO
× 1
远程控制
× 1
红外接收器(通用)
× 1
蜂鸣器
× 1
Adafruit 标准 LCD - 16x2 蓝底白字
× 1
旋转电位器(通用)
× 1
电阻 221 ohm
× 1

应用和在线服务

Arduino IDE

关于这个项目

你好黑客社区!

我是 Simone Adob​​s,这是我在本网站上发布的第二个项目。

这个项目的逻辑很简单:

  • 拿起你的遥控器,选择你想播放的旋律;
  • 带有蜂鸣器的 Arduino 将播放旋律;
  • 在 LCD 屏幕上,您可以看到播放的音符。

部分代码解释:

这是一个旋律的例子,所有的旋律都是这样写的:

void melody_example() { lcd.clear(); lcd.setCursor(0,0); lcd.print("歌曲名");延迟(1000);液晶显示器(); nota_mi(持续时间,暂停); //音符 nota_do(duration,pause); //音符lcd.clear();延迟(100); Reset_AVR(); //此命令用于在不按任何按钮的情况下重置Arduino} 

要使用“Reset_AVR()”命令,您必须将此代码放在草图的顶部:

#include  #include  #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) { 关闭(); //这个命令调用了一个我会往下解释的函数lcd.setCursor(0, 0); lcd.print("示例"); //打印音符名称 NewTone(11,262,duration); //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从远程接收新代码}  

我希望你会喜欢这个项目,如果是的话,试着看看我以前的项目。

祝你有美好的一天..

来自意大利的西蒙<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 result;int RECV_PIN=2;IRrecvirrecv(RECV_PIN);decode_results results;无效设置(){ Serial.begin(9600);液晶显示器。开始(16,2); lcd.setCursor(0,0); lcd.print("-----选择-----"); lcd.setCursor(0,1); lcd.print("----一首歌!!----"); pinMode(蜂鸣器,输出); irrecv.enableIRIn();} void loop() { if (irrecv.decode(&results)) { result=results.value, HEX; Serial.println(结果);如果(结果==12495){ ode(); } else if (result==6375) { 伦敦(); } else if (result==31365) { fur(); } else if (result==4335) { 海盗(); }irrecv.resume(); } 延迟(100);} 空毛(){ lcd.clear(); lcd.setCursor(0,0); lcd.print("毛皮伊莉丝");延迟(1000);液晶显示器(); 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(600,800); 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);液晶显示器();延迟(100); Reset_AVR();}void london() { lcd.clear(); lcd.setCursor(0,0); lcd.print("伦敦桥"); lcd.setCursor(0,1); lcd.print("正在掉下来");延迟(1000);液晶显示器(); nota_sol(450,600); nota_la(150,200); nota_sol(300,400); nota_fa(300,400); nota_mi(300,400); nota_fa(300,400); nota_sol(600,800); nota_re(300,400); nota_mi(300,400); nota_fa(600,800); nota_mi(300,400); nota_fa(300,400); nota_sol(600,800); nota_sol(450,600); nota_la(150,200); nota_sol(300,400); nota_fa(300,400); nota_mi(300,400); nota_fa(300,400); nota_sol(600,800); nota_re(600,800); nota_sol(600,800); nota_mi(300,400); nota_do(450,600);液晶显示器();延迟(100); Reset_AVR();}void ode() { lcd.clear(); lcd.setCursor(0,0); lcd.print("欢乐颂");延迟(1000);液晶显示器(); nota_mi(300,400); nota_mi(300,400); nota_fa(300,400); nota_sol(300,400); nota_sol(300,400); nota_fa(300,400); nota_mi(300,400); nota_re(300,400); nota_do(300,400); nota_do(300,400); nota_re(300,400); nota_mi(300,400); nota_mi(450,600); nota_re(150,200); nota_re(600,800); nota_mi(300,400); nota_mi(300,400); nota_fa(300,400); nota_sol(300,400); nota_sol(300,400); nota_fa(300,400); nota_mi(300,400); nota_re(300,400); nota_do(300,400); nota_do(300,400); nota_re(300,400); nota_mi(300,400); nota_re(450,600); nota_do(150,200); nota_do(600,800); nota_re(300,400); nota_re(300,400); nota_mi(300,400); nota_do(300,400); nota_re(300,400); nota_mi(150,200); nota_fa(150,200); nota_mi(300,400); nota_do(300,400); nota_re(300,400); nota_mi(150,200); nota_fa(150,200); nota_mi(300,400); nota_re(300,400); nota_do(300,400); nota_re(300,400); nota_sol(600,800); nota_mi(300,400); nota_mi(300,400); nota_fa(300,400); nota_sol(300,400); nota_sol(300,400); nota_fa(300,400); nota_mi(300,400); nota_re(300,400); nota_do(300,400); nota_do(300,400); nota_re(300,400); nota_mi(300,400); nota_re(450,600); nota_do(150,200); nota_do(600,800);液晶显示器();延迟(100); Reset_AVR();}void 海盗() { lcd.clear(); lcd.setCursor(0,0); lcd.print("他是海盗");延迟(1000);液晶显示器(); nota_mi(150,200); nota_sol(150,200); nota_la(300,400); nota_la(300,400); nota_la(150,200); nota_si(150,200); nota_do(300,400); nota_do(300,400); nota_do(150,200); nota_re(150,200); nota_si(300,400); nota_si(300,400); 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(300,400); nota_la(300,400); nota_la(150,200); nota_si(150,200); nota_do(300,400); nota_do(300,400); nota_do(150,200); nota_re(150,200); nota_si(300,400); nota_si(300,400); nota_la(150,200); nota_sol(150,200); nota_la(300,400);延迟(400); nota_mi(150,200); nota_sol(150,200); nota_la(300,400); nota_la(300,400); nota_la(150,200); nota_do(150,200); nota_re(300,400); nota_re(300,400); nota_re(150,200); nota_mi(150,200); nota_fa(300,400); nota_fa(300,400); 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(300,400); nota_do(300,400); nota_re(300,400); nota_mi(150,200); nota_la(450,600); nota_la(150,200); nota_do(150,200); nota_si(300,400); nota_si(300,400); nota_do(150,200); nota_la(150,200); nota_si(900,1200); nota_si(300,400); nota_si(300,400); nota_do(150,200); nota_la(150,200); nota_si(900,1200); nota_si(300,400); nota_si(300,400); nota_la(150,200); nota_sol(150,200); nota_la(600,800);液晶显示器();延迟(100); Reset_AVR();}void Shut() { if (irrecv.decode(&results)) { result=results.value, HEX; Serial.println(结果); if (result==-23971) { Reset_AVR(); } }irrecv.resume();}void nota_do(int duration, int pause) { 关闭(); lcd.setCursor(0, 0); lcd.print("做"); NewTone(11,262,持续时间); //做延迟(暂停); }void nota_doz(int 持续时间,int 暂停){ 关闭(); lcd.setCursor(0, 0); lcd.print("做#"); NewTone(11,277,持续时间); //做延迟(暂停); }void nota_re(int 持续时间,int 暂停){ 关闭; lcd.setCursor(0, 0); lcd.print("重新"); NewTone(11,294,持续时间); //RE延迟(暂停); }void nota_rez(int 持续时间,int 暂停) { 关闭; lcd.setCursor(0, 0); lcd.print("重新#"); NewTone(11,311,持续时间); //RE延迟(暂停); }void nota_mi(int 持续时间,int 暂停){ 关闭(); lcd.setCursor(0, 0); lcd.print("米"); NewTone(11,330,持续时间); //MI延迟(暂停); }void nota_fa(int 持续时间,int 暂停){ 关闭(); lcd.setCursor(0, 0); lcd.print("发"); NewTone(11,349,持续时间); //FA延迟(暂停); }void nota_faz(int 持续时间,int 暂停){ 关闭(); lcd.setCursor(0, 0); lcd.print("发#"); NewTone(11,370,持续时间); //FA延迟(暂停); }void nota_sol(int 持续时间,int 暂停) { 关闭(); lcd.setCursor(0, 0); lcd.print("溶胶"); NewTone(11,392,持续时间); //SOL延迟(暂停); }void nota_solz(int 持续时间,int 暂停) { 关闭(); lcd.setCursor(0, 0); lcd.print("溶胶#"); NewTone(11,415,持续时间); //SOL延迟(暂停); }void nota_la(int 持续时间,int 暂停) { 关闭(); lcd.setCursor(0, 0); lcd.print("拉"); NewTone(11,440,持续时间); //LA延迟(暂停); } void nota_laz(int 持续时间,int 暂停) { 关闭(); lcd.setCursor(0, 0); lcd.print("啦#"); NewTone(11,466,持续时间); //LA延迟(暂停); }void nota_si(int 持续时间,int 暂停) { 关闭(); lcd.setCursor(0, 0); lcd.print("Si"); NewTone(11,494,持续时间); //SI延迟(暂停); }

示意图

canzoni_con_tastiera_fQS3978roa.fzz

制造工艺

  1. 在没有 LIRC 的情况下将 IR Remote 与 Raspberry Pi 一起使用
  2. Arduino Gyroscope Game with MPU-6050
  3. Discord Security Camera with an ESP32
  4. Arduino 数字骰子
  5. DIY 37 LED 轮盘游戏
  6. 带 3D 打印外壳的电池供电电视遥控器
  7. 使用 Arduino Cloud 随时随地了解您家的温度!
  8. ATtiny85 迷你街机:贪吃蛇
  9. 便携式测距仪
  10. 使用 Cortana 控制 LED
  11. 遥控夹爪机器人
  12. 铜电镀