这是一款简易的音乐创作系统。使用 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 灯。
播放歌曲
现在就可以开始播放歌曲啦,你已经掌握了音符,可以随意尝试代码中的声音和音调。你也可以将自己喜欢的歌曲添加到代码中。
恩智浦推出可调光LED控制器,改善12V MR16灯的效率
工程师研发出可有效隐匿物体和人体的红外辐射的超薄轻量隐形板
红外测温仪能测体温吗
首尔半导体针对亿光提起的LED专利无效诉讼全部获胜
医疗记录将是苹果健康策略规划的关键因素
基于Arduino的音乐创作系统设计
回顾中信集团获IDC数字化转型综合领军者的介绍和分析
荣耀手机业务需要多少钱买下?
干货:波速测试仪器的测试方法和步骤
肖特基二极管怎么看正负 肖特基二极管和tvs管的区别
人工智能时代,企业如何转型
Semtech宣布首批基于LoRa®的Amazon Sidewalk第三方产品已上市
盛瑟传感一氧化碳模块介绍
ACXF-2D 大容量蓄电池修复仪
原创|keil中更改代码字体/颜色,设置自己酷炫编程界面
ARM推出针对PC类设备定制优化的核心架构-Cortex-A78C架构
BGA焊盘设计的基本要求
恒流LED控制芯片H7310介绍 线性恒流驱动照明解决方案
iPhone12 Pro/Pro Max的价格小幅下跌
ReactOS 0.4.13发布 更新亮点内容有哪些