基于Arduino的音乐创作系统设计

电子说

1.3w人已加入

描述

这是一款简易的音乐创作系统。使用 Arduino 驱动无源蜂鸣器和一排 LED 让音乐起舞。它巧妙的使用了红外遥控器作为琴键,通过编辑「乐谱」程序,来记录和创作自己的音乐。

项目中还自带了 Shape of you、Merry Christmas、Star wars、Game of Thrones 等经典流行音乐和电影、游戏原声!

材料清单

蜂鸣器

Arduino UNO R3 x 1USB 连接线 x 1跳线 x 21红色LED x 4绿色LED x 4黄色LED x 2无源蜂鸣器 x 1红外接收器和遥控器 x 1220Ω 限流电阻器 x 4面包板 x 1

接线

连接 LED 灯和无源蜂鸣器

蜂鸣器

蜂鸣器

1、将 LED 灯和蜂鸣器安装在面包板的同一行。

蜂鸣器

2、在 LED 灯左侧的将 220Ω 限流电阻插入到面包板的 GND 中。

连接两侧的 LED 灯

蜂鸣器

1、将两侧的 LED 灯连接在一起,同时安装 5 个电阻。

蜂鸣器

2、为了方便区分,使用与 LED 灯同色的跳线相连。

连接到 Arduino

蜂鸣器

1、使用五根跳线将 LED 灯的阳极连接到引脚

2、3、4、5、6。2、将无源蜂鸣器的 GND 引脚连接到面包板的 GND 上。

3、将无源蜂鸣器的正极引脚连接到 Arduino 的引脚 8 上。

蜂鸣器

4、将 IR 接收器插入面包板,并将信号引脚连接到面包板的引脚 9,将其 VCC 引脚连接到 5V 引脚,最后将 GND 引脚连接到面包板的 GND 上。

编程

库的介绍

项目中会使用两个额外的库:IRremote(用于处理红外远程信号) 和 toneAC(生成音调)。这些库都需要安装在 Arduino IDE 中。

蜂鸣器

常量和变量

该代码定义了一些常量和变量:

IR_RECEIVER_PIN:连接 IR 接收器的引脚。

LED_PINS:连接到 LED 灯的引脚阵列。

BUZZER_PIN:引脚连接到蜂鸣器。

IRrecv IRrecv(IR_RECEIVER_PIN):用于接收和解码 IR 信号的对象。

decode_resultsresults:用于存储解码的 IR 信号的变量。

tones:与音调相对应的一组频率。

currentToneIndex:跟踪当前播放的音调。

lastCommandTime:记录最后一个 IR 命令的时间,避免快速重复的命令。

debounceDelay:防止由于噪声或重复信号而快速触发的延迟。

设置功能

蜂鸣器

设置功能初始化串行通信,设置 IR 接收器,将 LED 灯引脚配置为输出,并执行初始 LED 灯闪烁以便获得视觉反馈。

循环功能

蜂鸣器

环路功能持续检查输入的 IR 信号。如果接收到一个信号,会经过足够长的去抖动的时间,然后打印信号的十六进制值,播放相应的乐音,并更新最后的命令时间。此外,它还触发了按顺序和反向闪烁 LED 灯的功能。

播放音调功能

蜂鸣器

playTone 功能将特定的 IR 远程十六进制值映射到相应的音乐音调。当找到一个有效值时,它会通过蜂鸣器播放相关的音调。短暂暂停后,会移动到下一个音调。如果你想播放歌曲,你可以在 Arduino 相关网站上检索,你会找到一些不错的音乐,例如生日快乐歌和超级玛丽主题曲。

闪烁 LED 灯的功能

蜂鸣器

LED 灯有三种闪烁的功能:

1、fashLEDs:按模式闪烁 LED 灯,表示指示代码的开始。

2、flashLEDsSequence:按顺序闪烁 LED 灯。

3、flashLEDsReverse:按相反方向闪烁 LED 灯。

蜂鸣器

播放歌曲

蜂鸣器

现在就可以开始播放歌曲啦,你已经掌握了音符,可以随意尝试代码中的声音和音调。你也可以将自己喜欢的歌曲添加到代码中。








审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分