陳新龍
今天我們用掌控板來實現波形監視器功能,這也是蠻有意思的一個挑戰。掌控板中集成了RGB燈、麥克風、光線傳感器……所以可以利用掌控板的麥克風模塊完成噪聲監視器的功能:根據聲音的高低通過掌控板記錄下數值并用繪圖的形式展現出來。本次實驗所用到的軟件是mPython,將軟件換成Mind+也可以實現。
通過掌控板自帶的聲音傳感器采集數據,首先定義聲音列表。將聲音傳感器獲取的數值存儲在列表中。掌控板上聲音傳感器的輸入范圍是0-4095,但是掌控板OLED顯示屏Y軸最大坐標是63。所以可以用映射的方法,將聲音檢測器檢測到的數值映射到0-60范圍內(并且取整),取60是為了上下稍留出一些空白部分,顯得比較好看。由于掌控板不斷地讀取聲音數據,添加到列表中,會導致列表中的聲音數據量太多,超出范圍,而且掌控板OLED顯示屏也畫不下,所以我們給聲音列表設定了一個長度128。當數據太多的時候,不斷地移除最早的數據,讓列表的數據進行移動,便可以實現基礎的動態的效果。
接下來要讓掌控板根據聲音數值制出波形圖,這就要用到坐標的知識。還要用循環將點與點連在一起:使用i從范圍0到聲音的長度減2。為什么要減2呢?因為第一次畫起點,終點是第二個點;第二次畫起點,終點是第三個點……最后一個畫起點是n-1個點,終點是n個點。那么如果起點是0,終點就是聲音的長度減2,每次間隔為1。
然后進行描點與繪制。點坐標的X值為變量i的值。Y的坐標為聲音列表的第i項值。點確定了,線就比較簡單,根據點的位置將線連接起來就可以了,但是要記住線是由兩個點才能確定的。這里需要注意兩點的坐標(i,聲音列表第i項)和(i+1,聲音列表的第i+1項)。
完成代碼之后便可以進行調試了,連接掌控板,往紅色箭頭方向吹氣或者發出聲音,便會看到掌控板OLED屏幕上顯示出波形圖。當然本例是通過檢測聲音后畫出波形圖,掌控板還有光線傳感器,我們也可以監控光的明暗變化用波形圖展示出來。完成這個實例后也可以查閱相關資料嘗試一下掌控板是否可以根據Excel列表中導入的值來進行數值的變化,期待聰明的你給一個優秀的回答。