Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
DIY综合交流区
ART加长版超级玛丽背景音乐
发布于 2012-10-25 07:46:03 浏览:5787
订阅该版
使用ART接个小喇叭来播放简单的音乐,孩纸们的最爱~~ ![IMG_0577.JPG](/uploads/53_88d22608e053aac94f67366e0237b96c.jpg) 播放时的[视频](http://t.cn/zluibzY) 程序如下: ``` /* Melody Plays a melody circuit: * 8-ohm speaker on digital pin 8 created 21 Jan 2010 modified 30 Aug 2011 by Tom Igoe This example code is in the public domain. http://arduino.cc/en/Tutorial/Tone */ #include "pitches.h" int pin = 3; // notes in the melody: int melody[] = { NOTE_E4, NOTE_E4, NOTE_E4, NOTE_C4, NOTE_E4, NOTE_G4, NOTE_G3, NOTE_C4, NOTE_G3, NOTE_E3, NOTE_A3, NOTE_B3, NOTE_AS3, NOTE_A3, NOTE_G3, NOTE_E4, NOTE_G4, NOTE_A4, NOTE_F4, NOTE_G4, NOTE_E4, NOTE_C4, NOTE_D4, NOTE_B3, NOTE_C4, NOTE_G3, NOTE_E3, NOTE_A3, NOTE_B3, NOTE_AS3, NOTE_A3, NOTE_G3, NOTE_E4, NOTE_G4, NOTE_A4, NOTE_F4, NOTE_G4, NOTE_E4, NOTE_C4, NOTE_D4, NOTE_B3, NOTE_G4, NOTE_FS4, NOTE_E4, NOTE_DS4, NOTE_E4, NOTE_GS3, NOTE_A3, NOTE_C4, NOTE_A3, NOTE_C4, NOTE_D4, NOTE_G4, NOTE_FS4, NOTE_E4, NOTE_DS4, NOTE_E4, NOTE_C5, NOTE_C5, NOTE_C5, NOTE_G4, NOTE_FS4, NOTE_E4, NOTE_DS4, NOTE_E4, NOTE_GS3, NOTE_A3, NOTE_C4, NOTE_A3, NOTE_C4, NOTE_D4, NOTE_DS4, NOTE_D4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_D4, NOTE_E4, NOTE_C4, NOTE_A3, NOTE_G3, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_D4, NOTE_E4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_D4, NOTE_E4, NOTE_C4, NOTE_A3, NOTE_G3 }; // note durations: 4 = quarter note, 8 = eighth note, etc.: int noteDurations[] = { 8,4,4,8,4,2,2, 3,3,3,4,4,8,4,8,8,8,4,8,4,3,8,8,3, 3,3,3,4,4,8,4,8,8,8,4,8,4,3,8,8,2, 8,8,8,4,4,8,8,4,8,8,3,8,8,8,4,4,4,8,2, 8,8,8,4,4,8,8,4,8,8,3,3,3,1, 8,4,4,8,4,8,4,8,2,8,4,4,8,4,1, 8,4,4,8,4,8,4,8,2 }; void setup() { // iterate over the notes of the melody: for (int thisNote = 0; thisNote < sizeof(noteDurations)/sizeof(noteDurations[0]); thisNote++) { // to calculate the note duration, take one second // divided by the note type. //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. int noteDuration = 1000/noteDurations[thisNote]; tone(pin, melody[thisNote],noteDuration); // to distinguish the notes, set a minimum time between them. // the note's duration + 30% seems to work well: int pauseBetweenNotes = noteDuration * 1; delay(pauseBetweenNotes); // stop the tone playing: noTone(pin); } } void loop() { // no need to repeat the melody. } ``` 最好是先把例程中的toneMelody的进行修改,然后另存为。这样这个程序所需要用的pitches.h头文件就会自动复制出来。这个程序的硬件接法是把喇叭的两条线中的一条接到了GND,一条接到了3(播放Melody,ART目前支持2和3pin)。另外接3 pin的线最好能够接一个100欧电阻,不接有烧掉的危险。
查看更多
8
个回答
默认排序
按发布时间排序
aozima
2012-10-25
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
赞。。。
nust-奔跑
2012-10-28
这家伙很懒,什么也没写!
PWM可以做音乐播放~ 关键如何将音乐转换为波的频率以及时间长短~~ 奈何工科男不懂音乐~
rogerz
2012-10-31
这家伙很懒,什么也没写!
别有风味的慢节奏超级玛丽。 顺便问一下,之前tone()失效的原因是什么啊?
bernard
2012-10-31
这家伙很懒,什么也没写!
好像是因为系统栈溢出吧,现在这么慢的节拍估计是因为OS tick是10ms,当进行延时时,如果低于10ms就默认取10ms来延时所以会被延时,下个版本调整为OS tick=1ms。
lgnq
2012-11-04
这家伙很懒,什么也没写!
新增儿歌《三只熊》 ``` // notes in the melody: int melody[] = { NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_E4, NOTE_G4, NOTE_G4, NOTE_E4, NOTE_C4, NOTE_G4, NOTE_G4, NOTE_E4, NOTE_G4, NOTE_G4, NOTE_E4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_G4, NOTE_G4, NOTE_E4, NOTE_C4, NOTE_G4, NOTE_G4, NOTE_G4, NOTE_G4, NOTE_G4, NOTE_E4, NOTE_C4, NOTE_G4, NOTE_G4, NOTE_G4, NOTE_G4, NOTE_G4, NOTE_E4, NOTE_C4, NOTE_G4, NOTE_G4, NOTE_G4, NOTE_A4, NOTE_G4, NOTE_C5, NOTE_G4, NOTE_C5, NOTE_G4, NOTE_E4, NOTE_D4, NOTE_C4, }; // note durations: 4 = quarter note, 8 = eighth note, etc.: int noteDurations[] = { 4, 8, 8, 4, 4, 4, 8, 8, 4, 4, 4, 4, 2, 4, 4, 2, 4, 4, 2, 4, 4, 4, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4, 2, 4, 4, 4, 4, 8, 8, 8, 8, 2, 4, 4, 4, 4, 4, 4, 2, }; ```
heyuanjie87
2012-11-04
这家伙很懒,什么也没写!
变调的问题已经解决,新的录音:[http://v.youku.com/v_show/id_XNDY5OTIzNjM2.html](http://v.youku.com/v_show/id_XNDY5OTIzNjM2.html)
heyuanjie87
2012-11-04
这家伙很懒,什么也没写!
>PWM可以做音乐播放~ >关键如何将音乐转换为波的频率以及时间长短~~ >奈何工科男不懂音乐~ --- 简谱的 1 2 3 4 5 6 7与字母表示的音符对应关系为: C D E F G A B。 pitches.h中定义了各种音符的频率。简谱中的1就是NOTE_C4这个就表示1的中频, NOTE_A4就是6的中频(后面为4的表示中频)。为5的就表示比4高八度,为3的表示比4低八度(频率相差一倍)。 在简谱中音符上面有一个点的表示比中频高八度、上面两个点表示高两个八度,音符下面加一个点的表示比中频低八度。 关于一个音符的时间长短概念俺也没彻底搞明白(别笑啊哥也是个工科男)。俺们就将一拍的时间定为1秒吧,则一个4分音符的时间就是250毫秒,一个二分音符的时间就是500毫秒。到底是几分音符是由音符右边或下面的短横线决定的。详情请查阅《简谱入门》,哥不罗嗦了。
撰写答案
登录
注册新账号
关注者
0
被浏览
5.8k
关于作者
bernard
这家伙很懒,什么也没写!
提问
414
回答
5943
被采纳
76
关注TA
发私信
相关问题
1
[项目]搞个开源的硬件项目
2
硬件计划贴,及时更新,欢迎提意见
3
软件计划贴,及时更新,欢迎提意见::WMA,MOUNT,LWIP等问题急需解决.
4
MMS协议
5
定点的wma解压库-libwma
6
QQ群记录 [20090821]
7
STM32网络收音机PCB报名征集
8
第一版调试记录
9
第二版硬件讨论
10
RADIO项目相关模块规格--欢迎大家自己做板时规格与此兼容,减少重复劳动
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
rt-thread 小内存算法源码分析
2
env中添加lvgl软件包后,keil编译包--c99错误
3
【NXP-MCXA153】 定时器驱动移植
4
GD32F450 看门狗驱动适配
5
【NXP-MCXA153】看门狗驱动移植
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
红枫
5
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
11
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部