蜂鸣器

根据发声原理不同分为电压式蜂鸣器和电磁式蜂鸣器。我们使用的是电磁式蜂鸣器,接通电源后,振动膜片周期性的振动发声。需要注意的一点是,发声是在内部有电流产生磁场,使得膜片振动的一瞬间。 如果内部一直是直流电的话我们只能听到很小的一下的声音,如果需要持续的声音(就像我萌以前过生日的那种唱生日快乐歌的小玩意)应该怎么办呢?需要一个交流的驱动电路就行。最简单的方波就可以驱动。 这里我们使用的是无源蜂鸣器, 这里的源指的是振荡源,自带BUFF的就是有源,也就是直接同直流电就可以发声,无源则需要外部送入方波信号用于驱动才行。

接线

arduino 蜂鸣器
5V VCC
GND GND
8 S

第一步 蜂鸣器响起来

前面我们已经把数字IO连接到了蜂鸣器的正极,让蜂鸣器响起来只需要在数字IO上放入方波即可。

digitalWrite(buzzerPin,HIGH); //高电平
delay(100);
digitalWrite(buzzerPin,LOW);  //低电平
delay(100);

其中的100指的是100ms,这样算来通电(高电平)占空比就是50%,周期200ms,那么频率就是500Hz,这个频率实际上已经比较高了。

不同的旋律

不同的乐音有着不同的频率,下面是一张乐音频率图。

我们知道了音调的频率后,下一步就是控制音符的演奏时间。每个音符都会播放一定的时间,这样才能构成一首优美的曲子,而不是生硬的一个调的把所有的音符一股脑的都播放出来。音符节奏分为一拍、半拍、1/4拍、1/8拍,我们规定一拍音符的时间为1;半拍为0.5;1/4拍为0.25;1/8拍为0.125……,所以我们可以为每个音符赋予这样的拍子播放出来,音乐就成了。

音符

#define Do 262
#define Re 294
#define Mi 330
#define Fa 349
#define Sol 392
#define La 440
#define Si 494

以《欢乐颂》为例


从简谱看,该音乐是D调的,这里的各音符对应的频率对应的是上表中D调的部分。另外,该音乐为四分之四拍,每个对应为1拍。几个特殊音符说明如下:
第一,普通音符。如第一个音符3,对应频率350,占1拍。
第二,带下划线音符,表示0.5拍。
第三,有的音符后带一个点,表示多加0.5拍,即1+0.5
第四,有的音符后带一个—,表示多加1拍,即1+1
第五,有的两个连续的音符上面带弧线,表示连音,可以稍微改下连音后面那个音的频率,比如减少或增加一些数值(需自己调试),这样表现会更流畅,其实不做处理,影响也不大。

程序

#define NTD0 -1
#define NTD1 294
#define NTD2 330
#define NTD3 350
#define NTD4 393
#define NTD5 441
#define NTD6 495
#define NTD7 556#define NTDL1 147
#define NTDL2 165
#define NTDL3 175
#define NTDL4 196
#define NTDL5 221
#define NTDL6 248
#define NTDL7 278#define NTDH1 589
#define NTDH2 661
#define NTDH3 700
#define NTDH4 786
#define NTDH5 882
#define NTDH6 990
#define NTDH7 112
//列出全部D调的频率
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.25
#define SIXTEENTH 0.625
//列出所有节拍
int tune[]=                 //根据简谱列出各频率
{NTD3,NTD3,NTD4,NTD5,NTD5,NTD4,NTD3,NTD2,NTD1,NTD1,NTD2,NTD3,NTD3,NTD2,NTD2,NTD3,NTD3,NTD4,NTD5,NTD5,NTD4,NTD3,NTD2,NTD1,NTD1,NTD2,NTD3,NTD2,NTD1,NTD1,NTD2,NTD2,NTD3,NTD1,NTD2,NTD3,NTD4,NTD3,NTD1,NTD2,NTD3,NTD4,NTD3,NTD2,NTD1,NTD2,NTDL5,NTD0,NTD3,NTD3,NTD4,NTD5,NTD5,NTD4,NTD3,NTD4,NTD2,NTD1,NTD1,NTD2,NTD3,NTD2,NTD1,NTD1
};
float durt[]=                   //根据简谱列出各节拍
{1,1,1,1,1,1,1,1,1,1,1,1,1+0.5,0.5,1+1,1,1,1,1,1,1,1,1,1,1,1,1,1+0.5,0.5,1+1,1,1,1,1,1,0.5,0.5,1,1,1,0.5,0.5,1,1,1,1,1,1,1,1,1,1,1,1,1,0.5,0.5,1,1,1,1,1+0.5,0.5,1+1,
};
int length;
int tonepin=8;   //得用6号接口
void setup()
{pinMode(tonepin,OUTPUT);length=sizeof(tune)/sizeof(tune[0]);   //计算长度
}
void loop()
{for(int x=0;x<length;x++){tone(tonepin,tune[x]);delay(500*durt[x]);   //这里用来根据节拍调节延时,500这个指数可以自己调整,在该音乐中,我发现用500比较合适。noTone(tonepin);}delay(2000);
}

Despacito

演奏效果

arduino用蜂鸣器演奏Despacito

连线


#define Speaker 3// speaker signal on D3
#define Drum 5// relay signal on D5
#define Interval 160
#define NoteSpacing 16const uint16_t Notes[]={0,31,33,35,37,39,41,44,46,49,52,55,58,62,65,69,73,78,82,87,93,98,104,110,117,123,131,139,147,156,165,175,185,196,208,220,233,247,262,277,294,311,330,349,370,392,415,440,466,494,523,554,587,622,659,698,740,784,831,880,932,988,1047,1109,1175,1245,1319,1397,1480,1568,1661,1760,1865,1976,2093,2217,2349,2489,2637,2794,2960,3136,3322,3520,3729,3951,4186,4435,4699,4978};
const uint16_t SongLength=64;
//notes to play
const uint8_t SpeakerTick[]={52,0,0,0,51,0,0,0,49,0,44,0,44,44,44,44,44,49,49,49,49,0,47,49,0,0,45,0,45,45,45,45,45,49,49,49,49,0,51,52,0,0,47,0,47,47,47,47,52,51,52,51,52,0,54,54,0,51,0,0,0,0,0,0};
//duration of each notes
const uint8_t NoteLength[]={4,0,0,0,4,0,0,0,2,0,1,0,1,1,1,1,1,1,1,1,2,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,2,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,2,0,1,2,0,3,0,0,0,0,0};
//duration of each relay tick
const uint8_t DrumTick[]={0,0,0,0,0,0,0,0,30,0,0,5,5,0,5,0,30,0,0,5,5,0,5,0,30,0,0,5,5,0,5,0,30,0,0,5,5,0,5,0,30,0,0,5,5,0,5,0,30,0,0,5,5,0,5,0,30,0,0,5,5,0,5,0};void setup() {pinMode(Speaker,OUTPUT);pinMode(Drum,OUTPUT);
}uint16_t ctr=0,t=0;void loop() {t=millis();if(NoteLength[ctr]!=0){noTone(Speaker);if(SpeakerTick[ctr]!=0) tone(Speaker,Notes[SpeakerTick[ctr]],NoteLength[ctr]*Interval-NoteSpacing);}if(DrumTick[ctr]!=0){digitalWrite(Drum,HIGH);delay(DrumTick[ctr]);digitalWrite(Drum,LOW);}ctr=(ctr+1) ;delay(Interval-(millis()-t));
}

生日快乐歌


int PIN_SPEAKER = 8;int length = 25;char notes[] = "ggagCbggagDCggGECbaffECDC";int beats[] = {1,1,2,2,2,4, 1,1,2,2,2,4, 1,1,2,2,2,2,2, 1,1,2,2,2,4,1};int tempo = 300;void playTone(int tone, int duration) {for (long i = 0; i < duration * 1000L; i += tone * 2) {digitalWrite(PIN_SPEAKER, HIGH);delayMicroseconds(tone);digitalWrite(PIN_SPEAKER, LOW);delayMicroseconds(tone);}}void playNote(char note, int duration) {char names[] = {'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C', 'D', 'E', 'F', 'G'};int tones[] = {1915, 1700, 1519, 1432, 1275, 1136, 1014, 956, 853, 759, 716, 637, 568};for (int i = 0; i < 12; i++) {if (names[i] == note) {Serial.print("value:");Serial.println(note);playTone(tones[i]*2, duration);}}}void setup() {pinMode(PIN_SPEAKER, OUTPUT);Serial.begin(115200);
}void loop() {for (int i = 0; i < length; i++) {if (notes[i] == ' ') {delay(beats[i] * tempo); } else {playNote(notes[i], beats[i] * tempo);}delay(tempo / 2); }}

爱拼才会赢

程序


#define NTC0 -1#define NTC1 262#define NTC2 294#define NTC3 330#define NTC4 350#define NTC5 393#define NTC6 441#define NTC7 495#define NTCL1 131#define NTCL2 147#define NTCL3 165#define NTCL4 175#define NTCL5 196#define NTCL6 221#define NTCL7 248#define NTCH1 525#define NTCH2 589#define NTCH3 661#define NTCH4 700#define NTCH5 786#define NTCH6 882#define NTCH7 990//列出全部C调的频率#define WHOLE 1#define HALF 0.5#define QUARTER 0.25#define EIGHTH 0.25#define SIXTEENTH 0.625//列出所有节拍int tune[]=                 //根据简谱列出各频率{NTC5,NTC5,NTC6,NTCH1,NTC6,NTC5,NTC6,NTCH1,NTC6,NTC5,NTC3,NTC3,NTC3,NTC5,NTC6,NTC6,NTC5,NTCH3,NTCH3,NTCH2,NTCH1,NTCH2,NTCH1,NTCH2,NTCH3,NTCH3,NTCH2,NTCH3,NTCH2,NTCH1,NTCH2,NTCH1,NTC6,NTCH2,NTCH2,NTCH2,NTCH1,NTC6,NTC5,NTC6,NTC5,NTC5,NTCH1,NTC6,NTC5,NTC1,NTC3,NTC2,NTC1,NTC2,NTC3,NTC5,NTC5,NTC3,NTCH1,NTC7,NTC6,NTC5,NTC6,NTCH1,NTCH2,NTCH3,NTCH3,NTCH2,NTCH1,NTC5,NTCH1,NTCH2,NTCH3,NTCH2,NTC0,NTCH3,NTCH2,NTCH1,NTC0,NTCH2,NTCH1,NTC6,NTC0,NTCH2,NTC6,NTCH1,NTCH1,NTCH1,NTC6,NTC5,NTC3,NTC5,NTC5,NTC6,NTCH1,NTC7,NTC6,NTCH3,NTCH3,NTCH3,NTCH3,NTCH2,NTCH2,NTCH1,NTC6,NTCH3,NTCH2,NTCH1,NTCH2,NTCH1,NTC6,NTCH1,};float durt[]=                   //根据简谱列出各节拍{0.5,0.25,0.25,1.5,0.5,0.5,0.25,0.25,0.5,0.5,1+1+1,0.5,0.25,0.25,1.5,0.5,0.5,0.5,0.25,0.25,0.5,1+1+1,0.5,0.5,0.5,0.5,0.5,0.25,0.25,0.5,0.25,0.25,0.5,0.5,0.5,0.5,0.25,0.25,1+1,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1+1+1,0.5,0.5,1.5,0.5,0.5,0.5,0.5,0.5,1.5,0.5,1,0.5,0.25,0.25,1.5,0.5,0.5,0.5,0.5,0.25,0.25,1+1+1,0.5,0.25,0.25,1,0.5,0.25,0.25,1,1,0.5,0.5,0.5,0.5,1,0.25,0.25,0.5,1+1+1+1,0.5,0.5,0.5,0.5,1+1,0.5,0.5,0.5,0.5,1.5,0.25,0.25,1.5,0.5,1,0.25,0.25,0.25,0.25,1+1+1+1,};int length;int tonepin=8;   //得用8号接口void setup(){pinMode(tonepin,OUTPUT);length=sizeof(tune)/sizeof(tune[0]);   //计算长度}void loop(){for(int x=0;x<length;x++){tone(tonepin,tune[x]);delay(500*durt[x]);   //这里用来根据节拍调节延时,500这个指数可以自己调整,在该音乐中,我发现用500比较合适。noTone(tonepin);}delay(2000);}

遇见

程序


#define NOTE_C0   -1
#define NOTE_CL1 131
#define NOTE_CL2 147
#define NOTE_CL3 165
#define NOTE_CL4 175
#define NOTE_CL5 196
#define NOTE_CL6 221
#define NOTE_CL7 248#define NOTE_C1 262
#define NOTE_C2 294
#define NOTE_C3 330
#define NOTE_C4 350
#define NOTE_C5 393
#define NOTE_C6 441
#define NOTE_C7 495#define NOTE_CH1 525
#define NOTE_CH2 589
#define NOTE_CH3 661
#define NOTE_CH4 700
#define NOTE_CH5 786
#define NOTE_CH6 882
#define NOTE_CH7 990//该部分是定义是把每个音符和频率值对应起来,全部都打上了,后面可以随意编写,直接调用(也可以用到哪个定义哪个)#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.25
#define SIXTEENTH 0.625
//该部分是对应了节拍int tune[] =
{
NOTE_C0,NOTE_C0,NOTE_C0,NOTE_C5,NOTE_C3,
NOTE_C3,NOTE_C5,NOTE_C2,NOTE_C2,NOTE_C3,NOTE_C2,
NOTE_C2,NOTE_C1,NOTE_C1,NOTE_C0,NOTE_C1,NOTE_CL7,
NOTE_CL6,NOTE_CL7,NOTE_C1,NOTE_CL7,NOTE_C1,NOTE_C1,NOTE_C2,NOTE_C3,
NOTE_C3,NOTE_C0,NOTE_C0,NOTE_C5,NOTE_C3,
NOTE_C3,NOTE_C5,NOTE_C2,NOTE_C2,NOTE_C3,NOTE_C2,
NOTE_C2,NOTE_C1,NOTE_C1,NOTE_C0,NOTE_C1,NOTE_CL7,
NOTE_CL6,NOTE_CL7,NOTE_C1,NOTE_CL7,NOTE_CL7,NOTE_C1,NOTE_C1,NOTE_C2,
NOTE_C1,NOTE_C0,NOTE_C0,NOTE_C5,NOTE_C6,NOTE_C7,NOTE_C4,NOTE_C3,NOTE_C2,NOTE_C1,NOTE_C7,NOTE_C5,NOTE_C3,
NOTE_C3,NOTE_C5,NOTE_C2,NOTE_C2,NOTE_C3,NOTE_C2,
NOTE_C2,NOTE_C1,NOTE_C1,NOTE_C0,NOTE_C1,NOTE_CL7,
NOTE_CL6,NOTE_CL7,NOTE_C1,NOTE_CL7,NOTE_CL7,NOTE_C1,NOTE_C1,NOTE_C2,
NOTE_C3,NOTE_C0,NOTE_C0,NOTE_C5,NOTE_C3,
NOTE_C3,NOTE_C5,NOTE_CH2,NOTE_CH2,NOTE_CH1,NOTE_C7,
NOTE_C7,NOTE_CH6,NOTE_C0,NOTE_C0,NOTE_C1,NOTE_CL7,
NOTE_CL6,NOTE_CL7,NOTE_C1,NOTE_CL7,NOTE_CL7,NOTE_C1,NOTE_C1,NOTE_C2,
NOTE_C1,NOTE_C0,NOTE_C0,NOTE_C5,NOTE_C6,NOTE_C7,
NOTE_CH1,NOTE_C7,NOTE_CH1,NOTE_C7,NOTE_C6,NOTE_C5,NOTE_C6,
NOTE_C6,NOTE_C5,NOTE_C5,NOTE_C5,NOTE_C1,NOTE_C2,NOTE_C3,
NOTE_C4,NOTE_C3,NOTE_C4,NOTE_C5,NOTE_C1,NOTE_C2,NOTE_C3,
NOTE_C3,NOTE_C3,NOTE_C0,NOTE_C0,NOTE_C5,NOTE_C6,NOTE_C7,
NOTE_C1,NOTE_C7,NOTE_CH1,NOTE_CH3,NOTE_CH1,NOTE_CH2,NOTE_CH3,
NOTE_CH3,NOTE_C5,NOTE_C5,NOTE_C5,NOTE_C1,NOTE_C2,NOTE_C3,
NOTE_C4,NOTE_C3,NOTE_C4,NOTE_C3,NOTE_C2,NOTE_C2,NOTE_C1,
NOTE_CL7,NOTE_C1,NOTE_C1,NOTE_C0,NOTE_C5,NOTE_C6,NOTE_C7,
NOTE_CH1,NOTE_C7,NOTE_CH1,NOTE_CH2,NOTE_CH1,NOTE_C7,NOTE_C6,
NOTE_C6,NOTE_C5,NOTE_C0,NOTE_C0,NOTE_C1,NOTE_C2,NOTE_C3,
NOTE_C4,NOTE_C3,NOTE_C4,NOTE_C5,NOTE_C1,NOTE_C1,NOTE_C6,
NOTE_C6,NOTE_C5,NOTE_C5,NOTE_C0,NOTE_C5,NOTE_C6,NOTE_C7,
NOTE_CH1,NOTE_C7,NOTE_CH1,NOTE_CH2,NOTE_CH1,NOTE_CH2,NOTE_CH3,
NOTE_CH3,NOTE_C5,NOTE_C5,NOTE_C0,NOTE_C1,NOTE_C2,NOTE_C3,NOTE_C4,
NOTE_C4,NOTE_C3,NOTE_C4,NOTE_C5,NOTE_C1,NOTE_C2,
NOTE_C2,NOTE_C3,NOTE_C2,NOTE_C1,NOTE_C1,NOTE_C1,NOTE_C0,NOTE_C0,
NOTE_C0,NOTE_C0,NOTE_C0,NOTE_C5,NOTE_C6,NOTE_C7,
NOTE_CH1,NOTE_C7,NOTE_CH1,NOTE_C7,NOTE_C6,NOTE_C5,NOTE_C4,
NOTE_C4,NOTE_C5,NOTE_C5,NOTE_C0,NOTE_C0,};float duration[]=
{
1,1,1,0.5+0.5,//听见
1,0.5+0.5,1,0.5+0.5,//冬天的离
0.5+0.5,1,1,0.5+0.5,//开  我在
0.5+0.5,0.5+0.5,0.5+0.5,0.5+0.5,//某年某月醒过来
1,1,1,0.5+0.5,//我想
1,0.5+0.5,1,0.5+0.5,//我等我期
0.5+0.5,1,1,0.5+0.5,//待未来
0.5+0.5,0.5+0.5,0.5+0.5,0.5+0.5,//却不能理智安
1,1,0.5+0.5,0.5+0.5,//排
0.5+0.5,0.5+0.5,1,0.5+0.5,//阴天
1,0.5+0.5,1,0.5+0.5,//傍晚车窗
0.5+0.5,1,1,0.5+0.5,//外  未来
0.5+0.5,0.5+0.5,0.5+0.5,0.5+0.5,//有一个人在等
1,1,1,0.5+0.5,//待   向左
1,0.5+0.5,1,0.5+0.5,//向右向前
0.5+0.5,1,1,0.5+0.5,//看  爱要
0.5+0.5,0.5+0.5,0.5+0.5,0.5+0.5,//拐几个弯才
1,1,0.5+0.5,0.5+0.5,//来  我遇见
1,0.5+0.5,0.5+0.5,0.5+0.5,//谁会有怎样的对
0.5+0.5,1,0.5+0.5,0.5+0.5,//白  我等的
1,0.5+0.5,0.5+0.5,0.5+0.5,//人他在多远的未
0.5+0.5,1,0.5+0.5,0.5+0.5,//来  我听见
1,0.5+0.5,0.5+0.5,0.5+0.5,//风来自地铁和人
0.5+0.5,1,0.5+0.5,0.5+0.5,//海  我排着
1,0.5+0.5,0.5+0.5,0.5+0.5,//队  拿着爱的号
0.5+0.5,1,0.5+0.5,0.5+0.5,//码牌  我往前
1,0.5+0.5,0.5+0.5,0.5+0.5,//飞  飞过一片时间
0.5+0.5,1,0.5+0.5,0.5+0.5,//海  我们也
1,0.5+0.5,0.5+0.5,0.5+0.5,//曾在爱情里受伤
0.5+0.5,1,0.5+0.5,0.5+0.5,//害   我看着
1,0.5+0.5,0.5+0.5,0.5+0.5,//路  梦的路口 有点
0.5+0.5,1,0.5+0.5,0.5+0.5,//窄   我遇见
1,0.5+0.5,0.5+0.5,1,//你 是最美丽的
0.25+0.25+0.25+0.25,0.5+0.5,1,1,//意外
1,1,0.5+0.5,0.5+0.5,//终有一
1,0.5+0.5,0.5+0.5,0.5+0.5,//天我的谜底会揭
0.5+0.5,1,1,1,//开};
//这部分是整首曲子的节拍部分,也定义个序列duration,浮点(数组的个数和前面音符的个数是一样的,一一对应)int length;//这里定义一个变量,后面用来表示共有多少个音符int tonePin=8;//蜂鸣器的端口,数字模拟都可以void setup(){pinMode(tonePin,OUTPUT);//设置蜂鸣器的pin为输出模式length = sizeof(tune)/sizeof(tune[0]);//这里用了一个sizeof函数,可以查出tone序列里有多少个音符}void loop() {  for(int x=0;x<length;x++)//循环音符的次数{  tone(tonePin,tune[x]);//此函数依次播放tune序列里的数组,即每个 音符delay(400*duration[x]);//每个音符持续的时间,即节拍duration,是调整时间的越大,曲子速度越慢,越小曲子速度越快,自己掌握吧noTone(tonePin);//停止当前音符,进入下一音符} delay(5000);//等待5秒后,循环重新开始
}

QQ交流群:247620001 验证信息:arduino

Arduino 蜂鸣器播放音乐相关推荐

  1. Arduino 蜂鸣器播放音乐LED灯闪烁

    一.实验所需组件: led灯 三脚蜂鸣器 面包板 Arduino开发板 杜邦线 二.实验原理 蜂鸣器实现音乐播放: 控制好频率和节拍,就能演奏出好听的音乐.因此,在实验之前要先弄清楚各音调的频率.可参 ...

  2. 一种非常简单的用arduino控制蜂鸣器播放音乐的方案

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 今天来聊聊用arduino控制蜂鸣器播放音乐的方案,当然必须还是老风格,虽然可能不是最 ...

  3. Arduino红外遥控无源蜂鸣器播放音乐

    Arduino红外遥控无源蜂鸣器播放音乐/模拟电子琴 简介 关于频谱 实验材料 接线 实验代码 模拟电子琴 接线 代码 总结 原文链接:https://www.yourcee.com/newsinfo ...

  4. 【Arduino】一个按键开关控制RGB音乐彩灯(蜂鸣器播放音乐+按键控制播放暂停+RGB彩灯随音乐节奏跳动)

    一.项目说明 这里我们需要使用到RGB LED.蜂鸣器.按键开关这个元件.为什么要叫RGB呢?是因为这个LED是由红(Red).绿(Green)和蓝(Blue)三种颜色组成.我们可以通过调整三个LED ...

  5. 蜂鸣器播放音乐 fpga实现

    目录 原理 实现 原理 蜂鸣器分为有源蜂鸣器和无源蜂鸣器,即以有无震荡源分类, 有震荡源直接通直流电就可发生,无震荡源则需要通震荡波才能发声. 这里介绍无源蜂鸣器播放音乐的方法. 思路: 利用计数器产 ...

  6. 【FPGA】五、蜂鸣器播放音乐

    文章目录 前言 一.蜂鸣器简介 二.音频音符简介 三.任务要求 四.程序设计 1.设计思路 2.程序代码 总结 前言 蜂鸣器(Buzzer)是现代常用的一种电子发声器,主要用于产生声音信号.它是一种一 ...

  7. 单片机并行口控制蜂鸣器播放音乐

    要用单片机并行口控制蜂鸣器播放音乐,需要完成以下步骤: 设计音乐:需要先确定音乐的节拍和音符,并将其转换为代码中的数值. 设置并行口:需要将单片机的并行口配置为输出模式,以便控制蜂鸣器. 编写代码:需 ...

  8. MCU-51:单片机蜂鸣器播放音乐和提示音

    目录 一.蜂鸣器介绍 二.驱动电路 2.1 三极管驱动 2.2 集成电路驱动 三.蜂鸣器播放音乐 3.1 键盘与音符对照 3.2 音符与频率对照 3.3 简谱 四.代码演示 4.1 按键蜂鸣器播放提示 ...

  9. 51单片机_11-2 蜂鸣器播放音乐

    文章目录 要求 资源 main函数 要求 控制蜂鸣器播放音乐 资源 工程文件压缩包 链接:https://pan.baidu.com/s/1hA-aa0JRP33IlOYFNzKf7A 提取码:0id ...

最新文章

  1. 让大规模深度学习训练线性加速、性能无损,基于BMUF的Adam优化器并行化实践...
  2. centOS6.5 安装 python2.7 pip
  3. 9.匿名函数:lambda表达式/filter()/map()
  4. IAR新建stm32工程,完美移植stm32标准库(附源码)
  5. 必备快速定位排查问题命令
  6. [react] componentWillUpdate可以直接修改state的值吗
  7. Linux 监视文件、文件夹改动
  8. 第1章 别让医生欺负你
  9. SlickEdit介绍
  10. python快递价格查询系统
  11. label confusion learning to enhance text classification models
  12. 黑暗城堡(dijkstra算法)
  13. 用Python去除图像的黑色或白色背景
  14. python爬虫 知乎_python爬虫——知乎(关于python的精华回答)
  15. 如何在 Web 浏览器中启用 Java?
  16. 典型环节的频率特性(建议收藏)
  17. 6.S081 lab: networking e1000 网卡驱动 附 Linux 网卡驱动编写分析
  18. AI大事件 | WaveNet推出了谷歌助手,苹果发布CoreML转换器
  19. Python爬虫入门,详细讲解爬虫过程
  20. 基于SVM支持向量机实现人脸识别

热门文章

  1. 2008年4月西雅图MVP全球峰会记录
  2. 再树行业标杆:华硕笔记本发布多款重磅新品
  3. 网络测试-2G、3G、4G网速参考
  4. 游戏服务端开发之防御性编程
  5. 启英泰伦-腾讯云小微产品方案
  6. Java编程入门笔记(十)
  7. 一个炫酷的头像悬停效果
  8. 美丽序列(动态规划)
  9. 关于次世代游戏,你知道多少?今天就带你详细了解一下!
  10. BIOS知识点--修改SMBIOS