labview
[ LabVIEW實作 - NI myRIO基礎篇 ] 鍵盤輸入與密碼比對實作
<攝影 : greatway>
一、成果展示
(一)、題目需求
- 設定密碼比對功能,密碼可自行設置
- 可使用鍵盤輸入密碼
- 按下硬體按鈕進行比對,此輸入密碼順便 清空
- 若密碼正確,亮綠燈 ; 反之,錯誤亮紅燈
(二)、成果展示
<source : greatway>
- 執行程式碼。
- 設定密碼為 259。
- 在鍵盤按下 259後,並於MyRIO裝置按下 "確認按鈕" (裝置底邊的右按鈕)。
- 密碼正確,人機介面亮綠燈 (錯誤則亮紅燈),同時輸入欄清空。
二、實作程式碼與解說
(一)、程式碼Demo
(二)、解題步驟
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 留言