02 與擴展板的結合
(2021/07/04)
【原來學Arduino這麼簡單(二)】
昨天介紹完Arduino及PictoBlox後,為了讓Arduino有更多應用,而且不用自己去接線,因此採用擴展板來簡化我們的工作,今天就介紹Arduino與擴展板的結合....
一、認識 數位及類比
Q:何謂數位訊號?
A:簡單來說,數位訊號只有兩種狀態。高電位跟低電位或者說1(ON)跟0(OFF)(可看做【電燈開關】,不是ON,就是OFF )。舉凡像是電腦、手機等等的電子產品幾乎都是輸送數位訊號。
Q:何謂類比訊號?
A:類比訊號,簡單的說,就是除了數位訊號以外的訊號都叫作類比訊號。像是溫度的高低變化,聲音的大小變化等連續訊號都是類比訊號(可看做像【瓦斯開關】,不是只有開跟關而已,還有可大一點、小一點的調控 )。類比訊號為連續訊號,不像數位訊號只有0、1兩種狀態,而是在0、1間還有其他的值,像0.1、0.3888…等。
二、認識【輸出裝置】及【輸入裝置】
以大家熟悉的電腦為例:
輸出裝置(電腦利用【什麼】來告訴我們它執行的結果,電腦對外部裝置的控制):螢幕、喇叭、印表機 ...
輸入裝置(我們利用【什麼】來告訴電腦做事情,外部裝置對電腦的控制):鍵盤、滑鼠、麥克風、搖桿 ...
電腦 <===> 外部裝置
今天的主角 Arduino 也可看成是一台電腦,所以與Arduino連接在一起的元件或感應器,也有輸出及輸入之分!
輸出裝置:(Arduino對外部裝置的控制)
又有分【數位輸出(DIGITAL OUT)】(ON/OFF)及【類比輸出(ANALOG OUT)】
數位輸出(DIGITAL OUT):
像我們對【外部LED燈】做亮滅(不是亮就是滅)控制
Arduino的D0、D1、....D13的腳位都可以當數位輸出腳位來控制外部元件(或裝置)(D代表Digital)
輸出高電位5V與低電位0V的數位訊號
類比輸出(ANALOG OUT):
像我們對【外部LED燈】做漸亮或漸滅的控制
Arduino的D3、D5、D6、D9、D10、D11(有小蚯蚓的符號)的腳位都可以當類比輸出腳位
上面的類比輸出腳位為PWM腳位,是將數位腳位模擬成類比腳位。
輸入裝置 :(外部裝置對Arduino的控制)
又有分【數位輸入(DIGITAL IN)】(就像開關 ON/OFF)及【類比輸入(ANALOG IN)】
數位輸入(DIGITAL IN):
【按鍵】是我們最常見的數位輸入裝置(相當於鍵盤),我們可以利用是否按下【按鍵】來控制Arduino的相關動作
Arduino的D0、D1、....D13的腳位都可以當數位輸入腳位來接收外部裝置訊號
類比輸入(ANALOG IN):
【可變電阻器】、【光敏電阻】是我們最常見的類比輸入裝置,我們可以根據接收到的類比值來控制Arduino的相關動作,如天黑請開燈....
Arduino的A0、A1、....A5的腳位都可以當類比輸入腳位來接收外部裝置訊號(D代表Analog)
三、認識【擴展板】
我們這次使用的擴展板是Arduino Easy Module Shield V1 ,如下:
數位腳位(通常D0、D1不會用到, 當RX與TX用)
D2腳位接了一顆【按鍵】
D3腳位接了一顆【按鍵】
D4腳位接了一顆【DHT11(溫濕度感應器)】
D5腳位接了一顆【蜂鳴器】
D6腳位接了一顆【紅外線接收器】
D7腳位沒有接東西,我們可以接我們想接的元件或感應器
D8腳位沒有接東西,我們可以接我們想接的元件或感應器
D9腳位接到了【三色LED的紅燈】
D10腳位接到了【三色LED的綠燈】
D11腳位接到了【三色LED的藍燈】
D12腳位接了一顆【紅色LED燈】
D13腳位接了一顆【藍色LED燈】
類比輸入腳位
A0:可變電阻器
A1:光敏電阻
A2:LM35溫度感測器模組
A3:沒有接東西,我們可以接我們想接的元件或感應器
A4:I2C接口(A4 SDA)
A5:I2C接口(A5 SCL)
其他
1個I2C接口(A4 SDA、A5 SCL)、1個TTL串口
四、開始寫程式了
(一)點亮擴展板上的LED燈
擴展板上的LED燈有兩種
單色LED燈:有兩顆,分別為LED1(D13)及LED2(D12),所使用腳位為一般的數位腳位(0或1)
三色LED燈:有一顆,分別用了R(D9)、G(D10)、B(D11),這3個腳位為PWM腳位,可進行類比輸出控制
實作一:交互點亮LED1及LED2(點亮時間為1秒)
先使用【舞台模式】,使用前記得先將【舞台模式】的韌體燒錄到板子去
這實作應該很簡單哦!
實作二:交互點亮三色LED燈的紅燈、綠燈、藍燈(每燈點亮時間為1秒)
程式跟上面很像,請問同學,能不能再把下面程式再簡化一下?
實作三:將三色LED燈的紅燈漸亮又漸滅,不停循環,這也就是所謂的【呼吸燈】
PWM腳位的輸出值為0~255間,其實0及255就是數位訊號的0及1,類比訊號就是在0與1間還有其他值
這可能要用到變數及迴圈,請同學先想一想如何做?
(二)請大熊告知【輸入裝置】所輸入的值
擴展板的輸入裝置如下:
數位輸入:按鍵1(SW1、D2)及按键2(SW2、D3)
類比輸入:可變電阻器(Rotation、A0)、光敏電阻(Light、A1)
實作一:請大熊告知【按鍵】按下及沒有按下時的【輸入數位值】
發現:
當未按下按鍵時,其輸入值為1
當按下按鍵時,其輸入值為0
實作二:當按下SW1按鍵時,亮藍色LED1燈,當按下SW2按鍵時,亮紅色LED2燈,放開按鍵則燈滅
這邊要把我們上面所介紹過的【數位輸出】及【數位輸入】結合在一起
由於要判斷是否按下按鍵,所以這邊也要用到【邏輯】積木
實作三:請設計按一下鍵亮燈(一直亮),再按一下滅燈(一直滅)
請同學想一想這要如何做?
實作四:請大熊告知【可變電阻器】的【輸入類比值】
類比輸入值介於0~1023間
實作五:天黑請開燈
在上例中,一樣可以請大熊說出光敏電阻的輸入類比值,發現
全遮光時:其值靠近0
很亮時,其值靠近1023
以輸入類比值小於200代表天黑了
當天黑時,請將藍色LED1點亮
(三)進階遊戲設計 (Arduino與舞台的互動)
實作一:跳大熊(恐龍)遊戲:按下按鍵,大熊(恐龍)會往上跳,避過障礙物
實作二:射擊遊戲:利用可變電阻器可以移動主角的位置,按下按鍵會射擊出子彈
實作三:大熊(猴子)接香蕉遊戲:利用可變電阻器可以移動大熊(猴子)的位置
實作四:天黑請開燈:太陽會隨著亮度做升降、舞台背景會隨著亮度做改變
實作一:跳大熊(恐龍)遊戲
按下按鍵,大熊(恐龍)會往上跳,避過障礙物
實作二:射擊遊戲
利用【可變電阻器】控制大熊的上下移動
按下【按鍵】會射擊出子彈
發現:只用了兩個角色,各自寫硬體控制程式,居然其中一個不會動,而且會卡卡的!所以才改用廣播的方式來處理。這部份沒有想像中的順暢。
實作三:大熊(猴子)接香蕉遊戲
利用可變電阻器可以移動大熊(猴子)的位置,這部份跟上面的一樣
實作四:天黑請開燈
太陽會隨著亮度做升降
舞台背景會隨著亮度做改變
(四)請大熊說出目前的溫度、濕度
實作一:請大熊說出目前的溫度、濕度
PictoBlox 建有DHT11模組的積木
實作二:設計當溫度>30度時,啟動接在D7的繼電器,繼電器上接有電扇
擴展板上D7及D8腳位並沒有接任何元件,所以我們可以自己接上一個繼電器
繼電器的啟動跟點亮LED燈一樣
高平觸發的繼電器,當提供高電位時就會啟動繼電器
低平觸發的繼電器,當提供低電位時就會啟動繼電器
(五)蜂鳴器的應用
擴展板的蜂鳴器是連接到Arduino的D5腳位
實作一:如何將電腦的鍵盤模擬成鋼琴的鍵盤?
發現此蜂鳴器積木在舞台模式下會有問題!!按鍵完後,還再執行,亮框不會消失!!
實作二:播放全家便利商店入店時的音樂
簡譜:3 1 5(低音) 1 2 5 2 3 2 5(低音) 1
在【舞台模式】一樣出問題!
將上面程式轉用【上傳模式】來試試,如下,成功!
(六)測試超音波測距感測器
超音波感測器有4支腳,分別為VCC、TRIG、ECHO、GND
我們將TRIG接到擴展板的D7、ECHO接到D8,VCC接VCC、GND接GND
實作一:請大熊說出目前量測到的距離
實作二:製作【倒車雷達】
如果距離大於30公分則沒有聲音
如果小於30公分、大於10公分時,則會嗶畢嗶叫,且距離越近叫聲越急促
如果小於10公分則會一直叫
由於蜂鳴器積木不能在【舞台模式】,所以一樣使用【上傳模式】
原來學Arduino這麼簡單!!