Arduino按键控制蜂鸣器音乐(按一下,音乐停,再按,放) 您所在的位置:网站首页 cnc4620暂停代码 Arduino按键控制蜂鸣器音乐(按一下,音乐停,再按,放)

Arduino按键控制蜂鸣器音乐(按一下,音乐停,再按,放)

2024-06-27 02:25| 来源: 网络整理| 查看: 265

室友非说不会,我能怎么办,肝它

此次实现的功能是(音乐是我们当时在禹州的时候扒的乐谱,歌唱祖国),按一下音乐播放,再按一下暂停,再按一下从刚才暂停的位置播放,

需要一个按键,一个蜂鸣器

按键接开发板2口,蜂鸣器接开发板1口

程序还是简单的

//音乐歌唱祖国 #define NTF0 -1 #define NTF1 350 #define NTF2 393 #define NTF3 441 #define NTF4 495 #define NTF5 556 #define NTF6 624 #define NTF7 661 #define NTFL1 175 #define NTFL2 196 #define NTFL3 221 #define NTFL4 234 #define NTFL5 262 #define NTFL6 294 #define NTFL7 330 #define NTFH1 700 #define NTFH2 786 #define NTFH3 882 #define NTFH4 935 #define NTFH5 1049 #define NTFH6 1178 #define NTFH7 1322 //列出全部D调的频率 #define WHOLE 1 #define HALF 0.5 #define QUARTER 0.25 #define EIGHTH 0.125 #define SIXTEENTH 0.0625 //列出所有节拍 int tune1[] = { NTF1, NTF1, NTF1, NTFL5, NTF3, NTF1, NTF5, NTF6, NTF5, NTF5, NTF5, NTF6, NTF6, NTF6, NTF5, NTF4, NTF6, NTF5, NTF5, NTF5, NTF5, NTF6, NTF6, NTF2, NTF2, NTF2, NTF5, NTF4, NTF3, NTFL5, NTFL5, NTF5, NTF5, NTF6, NTF5, NTF4, NTF3, NTF2, NTF1, NTF1, NTF5, NTF5, NTFH1, NTFH1, NTF6, NTF6, NTF5, NTF4, NTF5, NTF6, NTF2, NTF2, NTF5, NTF5, NTF6, NTF5, NTF4, NTF3, NTF2, NTF1, NTF1, NTF0, NTF1, NTFL5, NTF3, NTF3, NTF0, NTF3, NTF1, NTF6, NTF6, NTF0, NTFL6, NTFL6, NTF2, NTF2, NTF3, NTF2, NTF1, NTFL7, NTFL6, NTFL5, NTF1, NTFL5, NTFL6, NTFL6, NTFL5, NTF1, NTF2, NTF3, NTF0, NTF2, NTF6, NTF6, NTF5, NTF5, NTF3, NTF2, NTF6, NTF5, NTF0, NTFH1, NTFH1, NTFH1, NTFH1, NTF5, NTF6, NTF1, NTF6, NTF5, NTF4, NTF6, NTF5, NTF0, NTFH1, NTFH1, NTFH1, NTFH1, NTF5, NTF5, NTF6, NTF5, NTF4, NTF3, NTF2, NTF1, NTFL5, NTFL5, }; float durt1[] = { 0.5 + 0.25, 0.25, 1, 1, 1, 1, 1 + 0.5, 0.5, 1, 0.5 + 0.25, 0.25, 1, 1, 0.5 + 0.25, 0.25, 0.5, 0.5, 1 + 1, 1, 0.5 + 0.25, 0.25, 1, 1, 1, 0.5 + 0.25, 0.25, 1 + 0.5, 0.5, 1, 0.5 + 0.25, 0.25, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1 + 1, 1, 0.5 + 0.25, 0.25, 1, 1, 1, 0.5 + 0.25, 0.25, 1 + 0.5, 0.5, 1, 0.5 + 0.25, 0.25, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1 + 1, 1 + 0.5, 0.5, 0.5 + 0.25, 0.25, 1, 1 + 0.5, 0.5, 0.5 + 0.25, 0.25, 1, 1 + 0.5, 0.5, 1 + 0.5, 0.5, 1, 0.5 + 0.25, 0.25, 0.5, 0.5, 0.5, 0.5, 1 + 1, 1, 1, 0.5, 1, 0.5, 1, 1, 1, 1, 1, 0.5, 0.5, 0.5, 1, 0.5, 1, 1, 1, 0.5, 0.5, 0.5 + 0.25, 0.25, 0.5, 0.5, 1 + 0.5, 0.5, 0.5 + 0.25, 0.25, 0.5, 0.5, 1, 1, 0.5 + 0.25, 0.25, 0.5, 0.5, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1, 0.5 + 0.25, 0.25, }; int length; int buttonPin = 2;//按键 boolean ledState = false; int tonepin = 1; //蜂鸣器 void setup() { pinMode(tonepin, OUTPUT); length = sizeof(tune1) / sizeof(tune1[0]); //计算长度 pinMode(buttonPin, INPUT_PULLUP); } int p; void loop() { for (int x = 0; x < length; x++) { if (digitalRead(buttonPin) == LOW) {//如果读取到按键被按压改变ledStart ledState = !ledState; delay(500);//这个延迟是你按压按键的大概时间 p = x;//记录当前播放的音乐的位置 } if (ledState == true) {//如果ledState是这个状态就播放 tone(tonepin, tune1[x]); //音调 delay(400 * durt1[x]); //节拍进行延时 delay(100 * durt1[x]); //这里用来根据节拍调节延时,500这个指数可以自己调整,在该音乐中,我发现用500比较合适。 noTone(tonepin); }else{ x = p;//如果是暂停状态记录此时音乐的位置 } } }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有