一, 了解蜂鳴器(Buzzer) 蜂鳴器是一種電子發(fā)聲元器件,可以發(fā)出'beep beep'的聲音. 采用直流電壓供電,廣泛應(yīng)用于計(jì)算機(jī)、打印機(jī)、復(fù)印機(jī)、報(bào)警器、電子玩具、汽車電子設(shè)備、電話機(jī)、定時(shí)器等電子產(chǎn)品中作發(fā)聲器件。蜂鳴器在電路中用字母“FM”、“H”或“HA” 或“ZZG”、“LB”、“JD”等表示。 蜂鳴器分為有源蜂鳴器和無源蜂鳴器兩種。 有源蜂鳴器與無源蜂鳴器的區(qū)別:內(nèi)部有否震蕩源 注意:這里的“源”不是指電源,而是指震蕩源。 有源蜂鳴器內(nèi)部帶震蕩源,所以只要一通電就會(huì)叫; 無源蜂鳴器內(nèi)部不帶震蕩源,所以如果用直流信號(hào)無法令其鳴叫。必須用2K-5K的波形脈沖信號(hào)去驅(qū)動(dòng)它 有源蜂鳴器往往比無源的略貴,就是因?yàn)槔锩娑鄠€(gè)震蕩電路。 從外觀上看,兩種蜂鳴器好像一樣. 一般有源有源蜂鳴器比無源蜂鳴器厚一點(diǎn). 但是, 從外觀上并不能絕對(duì)的區(qū)分出有源與無源,最可靠的做法除了查看產(chǎn)品的參數(shù)手冊(cè)以外. 另一種方式是使用萬用表測(cè)試蜂鳴器電阻,只有8Ω或者16Ω的是無源蜂鳴器,電阻在幾百歐以上的是有源蜂鳴器。 1, 準(zhǔn)備元器件和器材 無源蜂鳴器 一個(gè) 面包板一塊 PNP型三極管(型號(hào)8550)一個(gè) 1K 電阻一個(gè) 杜邦線若干 2, 蜂鳴器驅(qū)動(dòng)電路原理圖 蜂鳴器元件需要通過一個(gè)驅(qū)動(dòng)電路接在單片機(jī)上. 典型的驅(qū)動(dòng)電路原理圖如下: 上述電路中用一個(gè)PNP型三極管做為控制開關(guān), 圖中FM是蜂鳴器 三極管C極接GND,E極接蜂鳴器的負(fù)端,三極管的B極通過一只1K-2K的電阻到單片機(jī)的GPIO腳 . 蜂鳴器的正端接VCC. 該電路中三極管相當(dāng)于一個(gè)開關(guān), 運(yùn)行原理如下: 1, 當(dāng)GPIO輸出高電平,三極B極與E極間沒有電壓差,三極管E極與C極間不通,蜂鳴器FM沒有電流通過,蜂鳴器不響。 2,當(dāng)GPIO輸出低電平,三極B極與E極間形成電壓差,三極管E極與C極之間導(dǎo)通,電流通過蜂鳴器FM,如果是有源蜂鳴器,則立即發(fā)出beep聲。 (1) 三極管型號(hào)為 8550, 其引腳如下圖: 如圖所示, 1腳=E(發(fā)射極,電路圖中帶箭頭的那個(gè)) 2腳=B(基極,電路圖中跟R相接的那個(gè)) 3腳=C(集電極,與E相對(duì)的那個(gè)) (2) 蜂鳴器有兩個(gè)腳有源蜂鳴器是一通電就響的,兩個(gè)腳分別是正負(fù)極, 兩個(gè)腳一長一短, 短腳為負(fù)極, 長腳為正極接VCC. 本例用的是無源蜂鳴器。 而無源蜂鳴器的是需要波形信號(hào)驅(qū)動(dòng)的,兩個(gè)腳沒有正負(fù)極。 用面包板接線 把三極管, 蜂鳴器, 電阻插入面包板, 按上述電路原理圖,用杜邦線接線, 接線如下圖: 蜂鳴器的正極(長腳)接5V, 負(fù)極(短腳)接三極管 E極 三極管B極接1K歐姆電阻,再接到Arduino D3腳 三極管C極接地 寫入以下程序 void setup(){ pinMode(3,OUTPUT); } void loop(){ tone(3,400);//頻率400 delay(1000); tone(3,1000);//頻率1000 delay(1000); tone(3,600); delay(1000); tone(3,300); delay(1000); } 這里,我們用到了一個(gè)內(nèi)置程序,tone(pin,p)。pin代表輸出腳,p代表輸出頻率。 tone()函數(shù)可以產(chǎn)生固定頻率的PWM信號(hào)來驅(qū)動(dòng)揚(yáng)聲器發(fā)聲。發(fā)聲時(shí)間長度和聲調(diào)都可以通過參數(shù)控制。定義發(fā)聲時(shí)間長度有兩種方法,第一種是通過tone()函數(shù)的參數(shù)來定義發(fā)聲時(shí)長,另一種是使用noTone()函數(shù)來停止發(fā)聲。如果您在使用tone()函數(shù)時(shí)沒有定義發(fā)聲時(shí)間長度,那么除非您通過noTone()函數(shù)來停止聲音,否則Arduino將會(huì)一直通過tone()函數(shù)產(chǎn)生聲音信號(hào)。 Arduino一次只能產(chǎn)生一個(gè)聲音。假如Arduino的某一個(gè)引腳正在通過tone()函數(shù)產(chǎn)生發(fā)聲信號(hào),那么此時(shí)讓Arduino使用另外一個(gè)引腳通過tone()函數(shù)發(fā)聲是不行的。 請(qǐng)注意: 1. 對(duì)于Arduino Mega以外的控制器,使用tone()函數(shù)時(shí)會(huì)影響引腳3和引腳11的PWM信號(hào)輸出。 2. 如果你想要使用不同的引腳產(chǎn)生不同的聲音音調(diào),每一次更換發(fā)聲引腳以前都要使用noTone函數(shù)停止上一個(gè)引腳發(fā)聲。Arduino是不支持兩個(gè)引腳同時(shí)發(fā)聲的。 各種蜂鳴器都有適用的頻率,在這個(gè)頻率下,發(fā)生最大。讀者可以從4000的頻率試用,更改頻率直到聲音合適。 |
|