在〈mBlock & Arduino(5)可變電阻、ADC 與節拍器〉中,我們利用 mBlock 中的「彈奏鼓聲…」方塊來發聲,這樣的話,你的 Arduino 就得一直連接著電腦,這個節拍器才能使用,如果要能夠不連接電腦(之後會介紹),那麼 Arduino 上就得有自己的發聲器,像是蜂鳴器。
使用蜂鳴器
聲音基本上來自振動,蜂鳴器基本上可分為壓電式與電磁式。
壓電式蜂鳴器使用壓電材料,這類具有 壓電效應,簡單來說,就是被施以壓力時會產生電荷,將機械能轉換為電能,這稱之為「正壓電效應」,如果對壓電材料施以電場,材料會產生形變,將電能轉換為機械能,這稱之為「逆壓電效應」,壓電式蜂鳴器透過對壓電材料外加電壓的大小、頻率等控制,來達到震動的效果,因而能產生聲音。電磁式蜂鳴器則是利用電磁方式,透過通電與否將金屬膜吸下或放開來達到振動的效果。
知道蜂鳴器的基本原理,就可以自己寫個小程式來發聲了,接腳有正負之分,你可以如下銜接電路(其實就只要連接正負極就可以了,夠簡單吧!):
如上圖連接的話,透過簡單地讓腳位 D7 在高低電位間切換,就可以聽到蜂鳴器發出聲音了:
「播放腳位…」方塊
當然,因為受到「等待」方塊的限制,這樣實際上能發出的頻率有限,在 mBlock 的機器人模塊中,其實有個「播放腳位…」方塊:
這個方塊可以指定哪個數位腳位以指定頻率、節拍數驅動蜂鳴器,相當於使用 Arduino 官方語言時,可呼叫的 tone
函式,只不過,在這邊頻率的設定,直接使用音階名稱 C2 到 D8 的下拉選單,省去你查詢音階對應的頻率,如果你只要是播放幾個音階的話,使用這個是還蠻簡單的,只不過,如果你想自行輸入頻率的話,就沒辦法了,想做個簡單的電子琴或歌曲播放,也會麻煩許多,就像 mBlock 內建的「音樂演奏」範例就落落長:
你可以直接開啟範例執行看看,聽聽看蜂鳴器的效果。真的要做比較有彈性的歌曲播放,或者是電子琴也不是不行,就是要對「播放腳位…」方塊做點封裝,有興趣可以自己試試 … XD
(mBlock 2.1 之後,「播放腳位…」方塊就可以使用下拉選單或自行指定數值了,這樣就有彈性的多了。)
使用蜂鳴器來打節拍
使用「播放腳位…」方塊來為〈mBlock & Arduino(5)可變電阻、ADC 與節拍器〉中的節拍器打節拍,程式上撰寫倒是還蠻簡單的,你可以先如下連接電路:
修改一下〈mBlock & Arduino(5)可變電阻、ADC 與節拍器〉的節拍器程式,如果將來打算可以讓 Arduino 可以不連接電腦執行程式,與桌面環境中資源控制的方塊要移除,像是控制貓咪的相關方塊:
接著試著執行看看程式吧!看看效果如何: