2014年5月15日 星期四

【S4A小專案】跳動的聲波(麥克風)

【實作影片】
小專案參考Scratch範例中的SoundGraph作品(在Simulations資料夾)。
先來看一看「跳動的聲波」小專案的實作情形





【使用軟體】
S4A (Scratch  for Arduino)
「跳動的聲波」的範例檔可於此下載

【硬體介紹】
Arduino UNO r3、S4A感應板(可參考motoduino 網站)


S4A感應板裝在Arduino上,並將Arduino載入S4A1.5韌體

這次使用到S4A感應板的感測器元件有麥克風
位置與針腳號碼如下圖



【S4A核心積木】
使用下圖積木(要選Analog2),可在程式中使用聲音的感測值



【程式教學順序】

觀察S4A的麥克風輸入值變化

麥克風接在類比輸入2,所以可從S4A 的感應面板中看到輸入的值,請看下圖的Analog2 (沒有聲音時,值為0)


請學生觀察在有聲音時,Analog2的變化情形

在本例中需要使用Scratch的XY座標,由Scratch附的座標圖來解說
X軸:-240 ~ 240  , Y軸 -180 ~ 180



將Arduino角色用繪圖方式加上新造型,畫一個小綠圓球
以下圖中的程式先讓小球從左到右動起來



再來畫加入小球畫線的功能(用下筆、停筆積木)



將聲音積木加入,使小綠球會依聲音變化Y軸的高低位置



原本的程式只能畫一次,加入2層迴圈(第二層迴圈要改要[重複執行直到]並加入X>230的停止條件)
這樣就可以有連續不斷畫出的聲波



接下來新增另一個角色小貓讓小貓隨聲音做特效,如下圖


(註:新增角色依原來Scratch方式,不使用第二個 Arduino角色。這是因為好幾次二個Arduino角色使用同一個連線,都會有不預期的錯誤發生,如:角色下次開啟時,會自動多2倍一樣的角色。所以與Arduino板子連線的角色只用一個會讓程式較穩定)



因為普通小貓角色無法直接使用聲音輸入值積木,所以建立一個聲音值的變數來存放Arduino的聲音感測值,如下圖



下圖中是小綠球的Arduino角色將Analog2的值放到[聲音值]變數的程式



下圖是普通小貓角色直接用變數[聲音值]來改變特效的程式



到此程式完成

【後記】
「跳動的聲波」小專案對國小學生有點辛苦,裡面使用到的XY平面直角座標、負數(-240)、與變數觀念,因為國小數學課都沒有正式介紹,所以如果在程式中使用,就要花點時間建立觀念並練習。相對地,如果是國中學生的話,程式中的大部份,就應可由國中生獨立完成了。


沒有留言:

張貼留言