前面两章玩转了数字信号和模拟信号,知道数字信号可以用来检测外部数据,一可以驱动外部开关;模拟信号可以采集外部电压信号,常用于传感器信号的输入;本章来讲解一个可以发声的东东,那就是传说中的蜂鸣器。 原理大放送: 有源蜂鸣器直接接上额定电源就可以发声,而无源蜂鸣器则和电磁扬声器一样,需要接在音频输出电路中才能发声。本模块使用的蜂鸣器为有源蜂鸣器,既可以直流驱动,发出一种单一频率的声音,也可以用可变频率的交流信号去驱动,发出简单的音乐声。 代码示例: [代码]php代码:#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 #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=11; void setup() { pinMode(tonepin,OUTPUT); length=sizeof(tune)/sizeof(tune[0]); } void loop() { for(int x=0;x 是的,你没有听错,它竟然在播放音乐......... 附件: |