第五章 類比輸入感測模組

自然界的信號都是屬於類比信號如:光線、溫度、溼度等,但一般電腦所能處理的信號只能是數位信號,因此,透過「類比輸入感測模組」將自然界連續性的信號先轉成「0 ~ 5V」電壓,提供給主板的類比輸入腳位,主板再將輸入的電壓轉成「0 ~ 1023」以方便程式判讀。

5-1 模組說明:


常用類比輸入模組,如:可變電阻模組、光線感測模組、溫度感測模組、土壤溼度模組、避障紅外線模組等,基本都是三支接腳,「VCC」和「GND」為電源腳位,「S」(或「A0」)為模組類比信號輸出腳位,如果輸入模組有四支接腳,除了前三支接腳外,還有一支是模組的數位輸出腳「D0」,此類模組上會有一個可用小十字螺絲起子調整的半可變電阻,用來調整臨界值決定在基準電壓以上時輸出高電位(High),基準電壓以下時輸出低電位(Low)。


5-2 「S」(或「A0」)可接至主板腳位:


A0 ~ A5:依照偵測結果模組輸出「0 ~ 5V」電位,主板讀取此類比信號後對應得到的數值為「0 ~ 1023」。


PS. 如果將「類比輸入感測器模組」的類比信號輸出連接至主板的數位輸入腳D2 ~ D12讀取會如何呢?實測主板大約是以類比中間值「512」做為數位值的分界點,但誤差約「± 50」(「D13」因有外接LED,分界點會有所差異),除非是偵測值變化量很大的模組(例如:「霍爾磁性模組」),否則應盡量避免此種接線方式。


5-3 範例1:縮放角色尺寸(可變電阻模組)


說明:


可變電阻是一種透過旋轉機構改變電阻值進而改變模組輸出電壓,主板偵測類比信號值為「0 ~ 1023」,將可變電阻模組輸出接到主板「A0」類比輸入腳位(如接線圖),讓角色的尺寸比例跟著「A0」腳位偵測值(0 ~ 1023)縮小或放大。

當此範例的「可變電阻模組」實作完成後,請務必將「可變電阻模組」更換成其他「類比輸入感測器模組」一一測試,觀察數值變化,其中「土壤濕度模組」用手輕按和用力按住兩金屬片光線感測模組」遮住光線觀察數值變化,「避障紅外線模組」的「A0」類比輸出腳接至主板類比輸入腳位A0 ~ A5」,觀察接近黑色平面和白色平面的變化。


接線圖:

程式碼:

執行結果:

5-4 範例2:改變角色水平位置(可變電阻模組)


說明:


同上一範例接線方式,使用「可變電阻模組」改變角色在舞台的水平位置,角色在舞台水平中心位置X=0,最左側約為 X= -200,最右側約為 X= 200 (舞台可活動寬度約為400),使用公式:「(A0 / 1024) * 400 ,將可變電阻信號範圍(0 ~ 1023) 等比例縮至舞台寬度(0 ~ 400),再用 200 減其值,將「0 ~ 400」轉成舞台X軸範圍「-200 ~ 200」。

接線圖:(同上一範例)

程式碼:

執行結果:

旋轉可變電阻改變角色在舞台的水平位置。

5-5 範例3:利用光線明暗控制LED亮度(光線模組+LED模組)


說明:


「光線模組」是採用光敏電阻透過光線明暗變化改變電阻值,進而改變模組輸出電壓(光線越暗輸出電壓越大),將「光線模組」的「S」(或A0)類比輸出腳位接到擴展板「A0」類比輸入腳位;並將「LED模組」輸出腳位接在擴展板「D3」PWM輸出腳(如接線圖),利用光線明暗(0 ~ 1023)控制LED亮度(0 ~ 255)


註:使用可變電阻模組避障模組土壤濕度模組取代光線模組」。

接線圖:

程式碼:

執行結果:

5-6、範例4:防疫大作戰射擊遊戲(按鈕模組+可變電阻模組)

本範例做一個簡單的遊戲專題,做為整合軟體及硬體的初步練習,同學可以自己修改程式,或是再加入硬體的聲(無源蜂鳴器模組)光(燈環板模組)效果。

硬體接腳:

遊戲說明:

遊戲中「河馬」扮演身體的「免疫防衛系統」,發射「免疫細胞」將入侵身體的「病毒」消滅,使用「可變電阻模組」調整「河馬」在舞台的垂直位置,「按鈕模組」可連續發射「免疫細胞」,當「免疫細胞」擊中「病毒」時,得一分並且消滅「病毒」,一旦「病毒」突破防線,則遊戲結束,同學可多複製「病毒」角色,增加遊戲難度。

遊戲角色如下:

河馬 (原角色名稱:Hippo1) ,在「魔幻」範例角色分類中取得。

病毒 (原角色名稱:Gobo) ,在「魔幻」範例角色分類中取得。

免疫細胞 (原角色名稱:Ball) ,在「全部」範例角色分類中取得。

GAME OVER 文字,在「字母」範例角色分類中分別取得。

河馬程式碼:

病毒程式碼:

免疫細胞程式碼:

所有「GAME OVER」字母程式碼: