基于 Arduino 的音乐创作系统


MAKER:JOSHIBOY61/译:趣无尽(转载请注明出处)

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

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

材料清单


Arduino UNO R3 x 1
USB 连接线 x 1
跳线 x 21
红色LED x 4
绿色LED x 4
黄色LED x 2
无源蜂鸣器 x 1
红外接收器和遥控器 x 1
220Ω 限流电阻器 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 中。

源码在项目的文件库中可以下载:
https://make.quwj.com/project/476

常量和变量
该代码定义了一些常量和变量:
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 灯。

播放歌曲


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

via



坐沙发

发表评论