學習目標 : 認識faya蜂鳴器模組的功能及使用方式
學習時間 : 50min
示範模組 : (1) fayaduino UNO
(2) faya 電源底板
(3) faya蜂鳴器模組
工具 : (1) 樂高積木底板 (相容)
====================功能介紹====================
faya 蜂鳴器模組擁有1個數位輸入埠BZ,只要給他規律的頻率,就能輸出對應的音頻,規律的頻率可利用Arduino中的tone()函式達成
- 當輸入nHz的頻率至BZ埠時,蜂鳴器產生nHz的音頻
- tone(腳位, 頻率, 輸出時間-微秒)
註1 : NC埠代表 No Connection,沒有作用
註2 : 蜂鳴器廠商大多在表面貼一張貼紙,降低輸出音量,使用者可視情況撕下
下表為常見用的音頻頻率,Arduino將8個音階的頻率定義在pitches.h 檔裏,可參考範例程式
====================原理知識====================
以下解釋提供給有需要知道背後原理的人:
蜂鳴器種類有壓電式和電磁式兩種,依驅動方式有可分為自激和他激式,以下兩個連結有非常詳細的說明與比較:
壓電式和電磁式蜂鳴器的比較
自激與他激式蜂鳴器的差別
faya蜂鳴器模組採用的蜂鳴器是他激-電磁式蜂鳴器,因此體積較小,但需要外部的方波訊號讓蜂鳴器產生音頻,這部分的工作就交給Arduino了,也是我們本文討論的重點。fayalab還有另一款[數位式蜂鳴器模組],採用的是自激-壓電式的蜂鳴器,大家可以參考連結文章。
模組電路很單純,方波訊號由BZ埠輸入經放大後推動蜂鳴器,產生和方波同樣頻率的音頻
由於蜂鳴器屬於電感式負載,電晶體經輸入方波切換時會因為楞次定律產生逆電壓,此時需要並聯一顆二極體 (fly black diode),消除逆電流,不然對電晶體會造成損害,解釋於下圖中:
Qon : 輸入方波High周期,電晶體導通,電流方向往下流 ,負載上的電壓上正下負。(下圖左)
Qff: 方波進入Low周期,電晶體截止瞬間,負載上的電壓因楞次效應變成上負下正,此時如果沒有對地迴路,正端的電壓會穿透半導體空乏區產生對地的電流,造成電晶體損壞,因此我們增加一個二極體讓電流往Vcc回流。(下圖中、右)
===================範例實作(1)===================
了解模組功能(原理)後,我們用以下範例來展示模組的功能:
目標:
(1) 利用tone函示讓蜂鳴器產生3秒鐘的Do
接線:
(1) 電源線連接
如下圖所示,連接的說明請看這篇文章 或簡易版
(2) 訊號線連接
Arduino_8 ===> 蜂鳴器_BZ
範例程式:
備註:
- 第一個範例很簡單,我們呼叫tone()函式,並填入腳位、頻率、時間。
範例結果:
成功上傳後蜂鳴器就會發出3秒鐘的第5階Do(C5)音,很直覺的結果,這邊就不提供錄影檔了!
===================範例實作(2)===================
目標:
(1) 建立一C5到C6的音階陣列
(2) 利用tone函示重複撥每個音階,每個音長度0.5秒,間隔0.2秒
接線:
和上一範例相同,無須更改
範例程式:
備註:
- 這個範例我們把tone()程式從setup{ }區塊裡挪到loop{ }區塊,這樣loop{ }區塊裡面的程式就會一直重複執行。
- L21~L25利用for迴圈,輪流撥放C5notes[]陣列內的八個音階
範例結果:
===================範例實作(3)===================
目標:
(1) 利用Arduino所提供的pitch.h音階列表,撥放小星星
接線:
和上一範例相同,無須更改
範例程式:
備註:
- L10: 將Arduino內建的 "pitches.h"檔案中內建了每個音符的音階(含升降音),記得把這個檔案和範例檔案(EMBuzzer_3.ino)放在同一個資料夾。
- 每個音符需要有音階(發出哪個頻率)和音長(多久時間)資訊,才能完整的撥放一個音,我們建立了兩個陣列,star[ ]和beat[ ]分別存放小星星的音階和每個音階的音長資訊,在L40行的時候一個一個輪流讀取放到tone()函式撥放。
範例結果:
我們在這篇範例裡面從一個音開始,一步一步的引導到讓蜂鳴器唱一首歌,希望大家未來能善用蜂鳴器模組,讓自己的作品更生動!
歡迎大家在底下留言或到我們的粉絲團留言喔!
====================================
fayalab 粉絲團
FB本篇留言版
沒有留言:
張貼留言