2017年5月16日 星期二

模組介紹 : fayaBCD開關模組


學習目標 : 認識fayaBCD開關模組的功能及使用方式
學習時間 : 40min
示範模組 : (1) fayaduino UNO
                 (2) faya 電源底板
                 (3) fayaBCD開關模組
工具 : (1) 樂高積木底板 (相容)


====================功能介紹====================
faya BCD開關模組擁有4個數位輸出埠,輸出的狀態隨著輸入的旋鈕(0~9)改變,它的好處是用4個腳位就能顯示10種變化 (2^4=16 > 10),輸入與輸出的關係如下所示 (H = Logic High, L = Logic Low):

  • 當轉到0時,埠1 2 4 8 的數位輸出分別為 L L L L
  • 當轉到1時,埠1 2 4 8 的數位輸出分別為 H L L L
  • 當轉到2時,埠1 2 4 8 的數位輸出分別為 L H L L
  • 當轉到3時,埠1 2 4 8 的數位輸出分別為 H H L L
  • 當轉到4時,埠1 2 4 8 的數位輸出分別為 L L H L
  • 當轉到5時,埠1 2 4 8 的數位輸出分別為 H L H L
  • 當轉到6時,埠1 2 4 8 的數位輸出分別為 L H H L
  • 當轉到7時,埠1 2 4 8 的數位輸出分別為 H H H L
  • 當轉到8時,埠1 2 4 8 的數位輸出分別為 L L L H
  • 當轉到9時,埠1 2 4 8 的數位輸出分別為 H L L H

     

    ====================原理知識====================
    以下解釋提供給有需要知道背後原理的人:  
    BCD (Binary-Coded-Decimal),二進碼十進制,利用了4個位元來儲存一個十進位的數字,最常用的BCD編碼,就是0到9這十個數值用二進碼(1,2,4,8)來表示,關係如下:



    用例子解釋,要顯示數字7時,7 = 1x1+2x1+4x1+8x0,因此BCD(1248)碼 = 1110。1代表導通的意思,BCD開關透過內部PCB,當轉到某數字時,相關的輸出點(1,2,4,8)和COM點會導通,我們透過分壓定理,把COM點串1K電阻到VCC,輸出10K電阻對地,讓導通的輸出拉到High。因此當我們轉到數字7時,輸出在埠(1, 2, 4, 8)得到 (High, High, High ,Low)的結果。


    BCD的內部結構類似這樣:


    ===================範例實作(1)===================
    了解模組功能(原理)後,我們用以下範例來展示模組的功能:

    目標:
    (1) 將BCD開關選定的數字顯示在Arduino Serial Monitor

    接線:
    (1) 電源線連接
         如下圖所示,連接的說明請看這篇文章 簡易版


    (2) 訊號線連接
          Arduino_8    ===>  BCD開關_1
          Arduino_9    ===>  BCD開關_2
          Arduino_10  ===>  BCD開關_4
          Arduino_11  ===>  BCD開關_8


    範例程式:

    備註:
    - 我們利用4個變數n1, n2, n4, n8分別記錄輸出埠1,2,4,8的狀態,然後把結果加總,就會和目前BCD開關所轉到的數字相同

    範例結果:


    討論:
    執行的時候,筆者發現有時候從某個數字轉到下一個數字時,過程中會出現 number = 1, 或 number = 2等等怪怪數字,這是因為當我們轉旋鈕轉到一半的時候,Arduino剛好到偵測當時的狀態,就直接把轉到一半狀態的結果顯示在Serial Monitor上,大家可以把最後一行的時間延長一些,解決此問題。

    另外我們的程式讓Arduino判斷當指撥數字改變時才顯示數值,如果一開始指撥數字停在0的地方 (0 = 0),因此Serial Monitor開啟後不會顯示出任何資訊,但如果一開始指撥數字停在3的地方 (3 != 0),Serial Monitor開啟後就會馬上顯示出來 number=3 (因為3不等於0),這樣顯示結果不一致,大家可以動動腦,看看怎麼靠程式修正這個問題!

    也歡迎大家在底下留言或到我們的粉絲團留言喔!
    ====================================
    fayalab 粉絲團
    FB本篇留言版 


    沒有留言:

    張貼留言