/
test2.py
128 lines (116 loc) · 2.27 KB
/
test2.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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#control of individual and groups of fingers via keyboard
import sys
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
#setup ports
ports = [18,23,25,22,4]
for outport in ports:
GPIO.setup(outport,GPIO.OUT)
#initiate hand
thumb = GPIO.PWM(4, 100)
index = GPIO.PWM(22, 100)
middle = GPIO.PWM(25, 100)
ring = GPIO.PWM(23, 100)
pinky = GPIO.PWM(18, 100)
hand = [thumb, index, middle, ring, pinky]
#vars
relax = 180 / 10 + 2.5
flex1 = 90 / 10 + 2.5
flex2 = 45 / 10 + 2.5
flex3 = 35 / 10 + 2.5
flex4 = 0 / 10 + 2.5
#prompt for command
def prompt():
print "Enter your command"
print "Use a <SPACE> to separate gestures"
print " <H> for thumb"
print " <J> for index"
print " <K> for middle"
print " <L> for fourth"
print " <;> for pinkie"
print "<SHOWBOAT> for demo"
print " <exit> to quit"
command = raw_input("Enter command: ")
digested = readInput(command)
gesture(digested)
time.sleep(1)
clear()
prompt()
#translate raw input
def readInput(command):
clear()
g = []
if (command == "exit"):
clear()
GPIO.cleanup()
print "Goodbye"
sys.exit()
if (command == ("showboat" or "SHOWBOAT")):
g.append(18)
g.append(0)
g.append(23)
g.append(0)
g.append(25)
g.append(0)
g.append(22)
g.append(0)
g.append(4)
g.append(0)
g.append(22)
g.append(0)
g.append(25)
g.append(0)
g.append(23)
g.append(0)
g.append(18)
g.append(0)
g.append(18)
g.append(23)
g.append(25)
g.append(22)
g.append(4)
g.append(0)
for c in command:
if (c == ("h" or "H")):
g.append(18)
if (c == ("j" or "J")):
g.append(23)
if (c == ("k" or "K")):
g.append(25)
if (c == ("l" or "L")):
g.append(22)
if (c == ";"):
g.append(4)
if (c == " "):
g.append(0)
return g
#gesture
def gesture(gest):
for g in gest:
if (g == 0):
time.sleep(1)
clear()
time.sleep(1)
if (g == 18):
thumb.ChangeDutyCycle(flex3)
if (g == 23):
index.ChangeDutyCycle(flex3)
if (g == 25):
middle.ChangeDutyCycle(flex3)
if (g == 22):
ring.ChangeDutyCycle(flex3)
if (g == 4):
pinky.ChangeDutyCycle(flex3)
#clears current gesture
def clear():
for finger in hand:
finger.ChangeDutyCycle(relax)
#main function
def main():
for finger in hand:
finger.start(relax)
print "Welcome to Project Wormtail"
prompt()
main()