蜂鳴器分為電磁式及壓電式兩種, 電磁式:由電流驅動,聲音較大但較為耗電。 壓電式:半導體電壓轉換陶磁片振動,由電壓驅動(陶磁片),較省電但聲音較小。 無論電磁式或壓電式依其驅動方式又分為兩種,自激式與他激式。 自激式:內藏驅動電路,只需直流電即可動作。 他激式:內無驅動電路,需加入交流電源及動作訊號才可動作。
基本發聲控制
const int buzzer = 4; // 蜂鳴器位於 pin 4
// 開發板啟動時,此區塊的程式碼運行1次
void setup(){
pinMode(buzzer, OUTPUT); // 設定蜂鳴器為OUTPU為輸出模式
}
// 開發板啟動後,重複執行此區塊程式碼
void loop(){
tone(buzzer, 1000); // 1000Hz 音頻
delay(1000); // 間隔1秒
noTone(buzzer); // 停止
delay(1000); // 間隔1秒
}
基本發聲控制
//列出所有音符頻率
#define NT0 -1
#define NT1 262
#define NT2 294
#define NT3 330
#define NT4 350
#define NT5 393
#define NT6 441
#define NT7 495
#define NTL1 131
#define NTL2 147
#define NTL3 165
#define NTL4 175
#define NTL5 196
#define NTL6 221
#define NTL7 248
#define NTH1 525
#define NTH2 589
#define NTH3 661
#define NTH4 700
#define NTH5 786
#define NTH6 882
#define NTH7 990
//列出所有節拍
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.25
#define SIXTEENTH 0.625
//音符排列
int tune[]=
{
NT3,NT3,NT4,NT5,
NT5,NT4,NT3,NT2,
NT1,NT1,NT2,NT3,
NT3,NT2,NT2,
NT3,NT3,NT4,NT5,
NT5,NT4,NT3,NT2,
NT1,NT1,NT2,NT3,
NT2,NT1,NT1,
NT2,NT2,NT3,NT1,
NT2,NT3,NT4,NT3,NT1,
NT2,NT3,NT4,NT3,NT2,
NT1,NT2,NTL5,NT0,
NT3,NT3,NT4,NT5,
NT5,NT4,NT3,NT4,NT2,
NT1,NT1,NT2,NT3,
NT2,NT1,NT1
};
//節拍排列
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=5; //檢查自己板子上的pin接口
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]); //延時
noTone(tonepin);
}
delay(2000);//重複間隔
}
#define NT0 -1 #define NT1 294 #define NT2 330 #define NT3 350 #define NT4 393 #define NT5 441 #define NT6 495 #define NT7 556 #define NTL1 147 #define NTL2 165 #define NTL3 175 #define NTL4 196 #define NTL5 221 #define NTL6 248 #define NTL7 278 #define NTH1 589 #define NTH2 661 #define NTH3 700 #define NTH4 786 #define NTH5 882 #define NTH6 990 #define NTH7 112
int tune[]={
NT5,NT5,NT6,NTH1,NT6,NT5,NT6,NTH1,
NT6,NT5, NT3,NT3,NT3,NT5,NT6,NT6,
NT5,NTH3,NTH3,NTH2,NTH1,NTH2,NTH1,
NTH2, NTH3,NTH3,NTH2,NTH3,NTH2,NTH1,
NTH2,NTH1,NT6,NTH2,NTH2,NTH2,NTH1,NT6,
NT5,NT6,NT5,NT5,NTH1,NT6,NT5,NT1,NT3,
NT2,NT1,NT2,NT3,NT5,NT5,NT3,NTH1,NT7,
NT6,NT5,NT6,NTH1,NTH2,NTH3,NTH3,NTH2,
NTH1,NT5,NTH1,NTH2,NTH3,NTH2,NT0,NTH3,
NTH2,NTH1,NT0,NTH2,NTH1,NT6,NT0,NTH2,
NT6,NTH1,NTH1,NTH1,NT6,NT5,NT3,NT5,NT5,
NT6,NTH1,NT7,NT6,NTH3,NTH3,NTH3,NTH3,
NTH2,NTH2,NTH1,NT6,NTH3,NTH2,NTH1,NTH2,
NTH1,NT6,NTH1
};
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};
沒有留言:
張貼留言