<攝影 : greatway>

一、成果展示

(一)、題目需求

  • 設定密碼比對功能,密碼可自行設置
  • 可使用鍵盤輸入密碼
  • 按下硬體按鈕進行比對,此輸入密碼順便 清空
  • 若密碼正確,亮綠燈 ; 反之,錯誤亮紅燈

(二)、成果展示

LabVIEW MyRIO 鍵盤設置

<source : greatway>

  1. 執行程式碼。
  2. 設定密碼為 259。
  3. 在鍵盤按下 259後,並於MyRIO裝置按下 "確認按鈕" (裝置底邊的右按鈕)。
  4. 密碼正確,人機介面亮綠燈 (錯誤則亮紅燈),同時輸入欄清空。

二、實作程式碼與解說

(一)、程式碼Demo

LabVIEW MyRIO 鍵盤密碼實作 程式碼


(二)、解題步驟

1.讀取鍵盤被觸發的位置

讀取鍵盤被觸發的位置
黃色所圈選的為這部份的程式碼。參考 4*4 鍵盤運作原理,先以1個 4*4 的矩陣進行初始化。對角線的值為 "False",作為一次用一個ROW來判斷值的依據。電腦掃描的方式,會先看ROW,再去看此ROW中的哪個COLUMN被觸發。

用圖來表示,會更容易理解。程式會先執行ROW(紅色)的掃描,再進行COLUMN(綠色)掃描。
<製圖 : greatway>

利用 "Search 1D Array" 的程式方塊與邏輯判斷,將鍵盤被觸發的位置訊號送出。

2.讀取相應位置的字元值


黃色所圈選的為這部份的程式碼。先看到最左邊,製作一個常數字串陣列,內容對應ROW和COLUMN的順序,依序為 1、2、3、A、4、5、6、B、7、8、9、C、0、E、F。

接著在 "Case" 的程式結構,加入 "Index Array"的程式方塊,索引鍵盤所觸發的相對位置,並在常數字串陣列中取出相對應的值。舉例來說,如果我按鍵盤的1,鍵盤的(1, 1)第一列第一行位置訊號被觸發, "Index Array"程式方塊會抓取相對應位置的值 "1"。

3.將密碼顯示欄位清空,以接收鍵盤所輸入的值

黃色所圈選的為這部份的程式碼。我們希望每次輸入的字元都可以被保留,形成字串,因此在最外圍的迴圈中,點選 "Add Shift Register(移位暫存器) "存取每次的輸入位元。同時給定一個空字串為初始值。

進行到這部份時,或許你會遇到一個問題。就是當你在鍵盤按下 "1" 時,密碼顯示視窗卻出現數量不等的1,但其實你只想輸入一次的 "1"。

為了解決這個問題,我們可以利用 "Value Change"這個程式方塊(請見下圖)。它的原理為當輸入狀態,值不一樣才會輸出。也就是當你按下鍵盤1,這時候視窗會顯示1,直到你重新按下第二個鍵之前,視窗不會再增加任何值。
因此將"Value Change"程式方塊接到 "Search 1D Array"後去接值,再把條件判斷的線接到 "Case" 結構中。

備註 : "Value Change" 程式方塊位置 : Functions >> Signal Processing >>  Point by Point >> Other Functions

4.進行鍵盤輸入、密碼比對與燈號顯示的設計

進行鍵盤輸入、密碼比對與燈號顯示的設計

黃色所圈選的為這部份的程式碼。依據題意,要進行密碼判斷,一樣可以用 "Case" 結構來進行。

如果密碼正確,則將密碼清空。因此,我們可以利用 "Select" 的程式方塊,在 True 條件設定空字串,在False條件則接前一個 "Case" 餵過來的值。

接著設定兩個燈號,亮綠燈為密碼正確,亮紅燈代表密碼錯誤。用 "="的程式方塊來做判斷。

最後別忘了將 Reset myRIO的程式方塊接上,再看看有沒有斷線。若沒有問題,就可以直接Run Code了。

(三)、接線示意圖




COL 4 : B / DIO3
COL 3 : B / DIO2
COL 2 : B / DIO1
COL 1 : B / DIO0

ROW 4 : B / DIO7 
ROW 3 : B / DIO6 
ROW 2 : B / DIO5 
ROW 1 : B / DIO4 

---
參考資料 :

0 留言