有一段時間非常熱衷使用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)

張貼留言