02 與擴展板的結合

(2021/07/04)

【原來學Arduino這麼簡單(二)】

昨天介紹完Arduino及PictoBlox後,為了讓Arduino有更多應用,而且不用自己去接線,因此採用擴展板來簡化我們的工作,今天就介紹Arduino與擴展板的結合....

各種模組介紹:https://cavedu.gitbook.io/cavedu/rk002/module

、認識 數位及類比

  • 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這麼簡單!!