-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathkeypad.py
62 lines (55 loc) · 1.56 KB
/
keypad.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/usr/bin/python3
'''
横3*縦4
薄膜キーパット(3x4) [KEYPAD-UM3X4]
http://www.aitendo.com/product/3644
'''
def keypad_get(*allkey):
import RPi.GPIO as GPIO
key_x =allkey[:3]
key_y =allkey[3:]
GPIO.setup(key_y,GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.setup(key_x,GPIO.OUT)
GPIO.output(key_x[0], GPIO.LOW )
GPIO.output(key_x[1], GPIO.HIGH )
GPIO.output(key_x[2], GPIO.HIGH )
if ( GPIO.input(key_y[0]) == 0 ):
return 1
elif ( GPIO.input(key_y[1]) == 0 ):
return 4
elif ( GPIO.input(key_y[2]) == 0 ):
return 7
elif ( GPIO.input(key_y[3]) == 0 ):
return 11 # [*]
GPIO.output(key_x[0], GPIO.HIGH )
GPIO.output(key_x[1], GPIO.LOW )
GPIO.output(key_x[2], GPIO.HIGH )
if ( GPIO.input(key_y[0]) == 0 ):
return 2
elif ( GPIO.input(key_y[1]) == 0 ):
return 5
elif ( GPIO.input(key_y[2]) == 0 ):
return 8
elif ( GPIO.input(key_y[3]) == 0 ):
return 10 #[0]
GPIO.output(key_x[0], GPIO.HIGH )
GPIO.output(key_x[1], GPIO.HIGH )
GPIO.output(key_x[2], GPIO.LOW )
if ( GPIO.input(key_y[0]) == 0 ):
return 3
elif ( GPIO.input(key_y[1]) == 0 ):
return 6
elif ( GPIO.input(key_y[2]) == 0 ):
return 9
elif ( GPIO.input(key_y[3]) == 0 ):
return 12 # [#]
return 0
if __name__ == '__main__':
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
key_y = (37 ,35 ,33 ,31 )
key_x = (29 ,23 ,21)
while 1:
key =keypad_get(*key_x, *key_y)
print(key)