有一段時間非常熱衷使用Arduino做一些有趣的實驗,其中一個就是Keypad,從拆解看Keypad線路到完成使用按鍵演奏音樂,覺得非常充實。今天使用Raspberry Pi也來試試看能否成功安裝Keypad
輸出數字。
• 麵包板 x 1
• Raspberry Pi 主板 x 1
• 3x4 Keypad x 1
• 連接線 x 7條
• Raspberry Pi Pin11(GPIO17)接到 Keypad 左邊第二隻接腳
...請參考下表,於此類推:
實驗過程中,數字789那一排一直無法出現在Console上,覺得很奇怪,查一下那一排ROW2是接到Pin13,也就是GPIO21,先將 Pin13 改接到 Pin7 (GPIO4),顯示就就沒問題了。後來在網路上查詢時發現新版Raspberry Pi 新推出的版本已經將GPIO21改為GPIO27。於是將程式的Pin7 的GPIO4改為Pin 13的GPIO27,鍵盤按鍵789也可以顯示在Console上了。
[材料]
• 麵包板 x 1
• Raspberry Pi 主板 x 1
• 3x4 Keypad x 1
• 連接線 x 7條
[線路連接與電路圖]
• Raspberry Pi Pin7(GPIO4)接到 Keypad 左邊第一隻接腳• Raspberry Pi Pin11(GPIO17)接到 Keypad 左邊第二隻接腳
...請參考下表,於此類推:
位置 | KeyPad接腳 | Raspberry Pi GPIO接腳 |
COL0 | ||
COL1 | ||
COL2 | ||
ROW0 | ||
ROW1 | ||
ROW2 | ||
ROW3 |
實驗過程中,數字789那一排一直無法出現在Console上,覺得很奇怪,查一下那一排ROW2是接到Pin13,也就是GPIO21,先將 Pin13 改接到 Pin7 (GPIO4),顯示就就沒問題了。後來在網路上查詢時發現新版Raspberry Pi 新推出的版本已經將GPIO21改為GPIO27。於是將程式的Pin7 的GPIO4改為Pin 13的GPIO27,鍵盤按鍵789也可以顯示在Console上了。
[程式]
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) rows = [4, 17, 18, 22] cols = [23, 24, 25] keys = [ ['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['*', '0', '#']] for row_pin in rows: GPIO.setup(row_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) for col_pin in cols: GPIO.setup(col_pin, GPIO.OUT) def get_key(): key = 0 for col_num, col_pin in enumerate(cols): GPIO.output(col_pin, 1) for row_num, row_pin in enumerate(rows): if GPIO.input(row_pin): key = keys[row_num][col_num] GPIO.output(col_pin, 0) return key while True: key = get_key() if key : print(key) time.sleep(0.2)
張貼留言