質問編集履歴
2
ソースコードについて
test
CHANGED
File without changes
|
test
CHANGED
@@ -37,6 +37,10 @@
|
|
37
37
|
|
38
38
|
|
39
39
|
### 該当のソースコード
|
40
|
+
|
41
|
+
一度pdfに出力したものからコピペしたので、一部文字化けしてしまっています。
|
42
|
+
|
43
|
+
後ほど変更します。
|
40
44
|
|
41
45
|
|
42
46
|
|
1
前提・実現したいこと、ソースコード、試したことの追記です。
test
CHANGED
File without changes
|
test
CHANGED
@@ -18,6 +18,14 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
+
質問:
|
22
|
+
|
23
|
+
・ifやtry文で両方の処理を実現できるかどうか
|
24
|
+
|
25
|
+
・gamepad.read_one()またはgamepad.read_loop()に代るコードで、実現できるものはないかどうか
|
26
|
+
|
27
|
+
|
28
|
+
|
21
29
|
### 発生している問題・エラーメッセージ
|
22
30
|
|
23
31
|
|
@@ -28,14 +36,156 @@
|
|
28
36
|
|
29
37
|
|
30
38
|
|
39
|
+
### 該当のソースコード
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
```Python
|
44
|
+
|
45
|
+
while(1):
|
46
|
+
|
47
|
+
event = gamepad.read_one()
|
48
|
+
|
49
|
+
if event != None :
|
50
|
+
|
51
|
+
#for event in gamepad.read_loop() :
|
52
|
+
|
53
|
+
f = open(’./data/cam.txt’, mode=’r’) s=f.read()
|
54
|
+
|
55
|
+
f.close()
|
56
|
+
|
57
|
+
s = float(s)
|
58
|
+
|
59
|
+
print("s␣=␣%3d" %(s)) if s != 0 :
|
60
|
+
|
61
|
+
stop(in1,in2,in3,in4) print("Obstacles!!") sys.exit(0)
|
62
|
+
|
63
|
+
if event.type == ecodes.EV_KEY: if event.value == 1:
|
64
|
+
|
65
|
+
if event.code == yBtn: print("Y-medium") p.ChangeDutyCycle(50) p2.ChangeDutyCycle(50)
|
66
|
+
|
67
|
+
elif event.code == bBtn: print("B-stop")
|
68
|
+
|
69
|
+
elif event.code == cBtn: print("C-very␣high") p.ChangeDutyCycle(100) p2.ChangeDutyCycle(100)
|
70
|
+
|
71
|
+
elif event.code == aBtn: print("A-QR␣mode␣press␣Ctrl+C␣to␣exit") capture_code()
|
72
|
+
|
73
|
+
root.mainloop()
|
74
|
+
|
75
|
+
elif event.code == xBtn: print("X-low") p.ChangeDutyCycle(25) p2.ChangeDutyCycle(25)
|
76
|
+
|
77
|
+
elif event.code == zBtn: print("Z-high") p.ChangeDutyCycle(75) p2.ChangeDutyCycle(75)
|
78
|
+
|
79
|
+
elif event.code == home:
|
80
|
+
|
81
|
+
print("home-line␣auto␣mode␣press␣Ctrl+C␣to␣exit") p.ChangeDutyCycle(20)
|
82
|
+
|
83
|
+
p2.ChangeDutyCycle(20)
|
84
|
+
|
85
|
+
forward(in1, in2,in3,in4)
|
86
|
+
|
87
|
+
try:
|
88
|
+
|
89
|
+
while (1) :
|
90
|
+
|
91
|
+
forward(in1, in2,in3,in4)
|
92
|
+
|
93
|
+
if ((not GPIO.input(left_sensor)) and (GPIO.input(right_sensor))):
|
94
|
+
|
95
|
+
print("move␣left") p.ChangeDutyCycle(0) p2.ChangeDutyCycle(70) sleep(0.5)
|
96
|
+
|
97
|
+
elif ((not GPIO.input(right_sensor)) and (GPIO.input(left_sensor))): print("move␣right")
|
98
|
+
|
99
|
+
p.ChangeDutyCycle(70)
|
100
|
+
|
101
|
+
p2.ChangeDutyCycle(0)
|
102
|
+
|
103
|
+
sleep(0.5)
|
104
|
+
|
105
|
+
elif ((not GPIO.input(right_sensor)) and (not GPIO.input(left_sensor))) :
|
106
|
+
|
107
|
+
i = random.randrange(100) print("Going␣back") p.ChangeDutyCycle(20) p2.ChangeDutyCycle(20) backward(in1,in2,in3,in4) sleep(0.5)
|
108
|
+
|
109
|
+
if (i%2 == 0 ): p.ChangeDutyCycle(0) p2.ChangeDutyCycle(70) forward(in1, in2,in3,in4) sleep(0.2)
|
110
|
+
|
111
|
+
else:
|
112
|
+
|
113
|
+
p.ChangeDutyCycle(70) p2.ChangeDutyCycle(0) forward(in1, in2,in3,in4) sleep(0.2)
|
114
|
+
|
115
|
+
else: print("Following␣the␣line!") p.ChangeDutyCycle(20) p2.ChangeDutyCycle(20)
|
116
|
+
|
117
|
+
except KeyboardInterrupt: print(’exiting...’) GPIO.cleanup() print("GPIO␣Clean␣up") sys.exit(0)
|
118
|
+
|
119
|
+
elif event.code == select: GPIO.cleanup() print("select-GPIO␣Clean␣up") break
|
120
|
+
|
121
|
+
elif event.code == lTrig: print("PUMP␣OFF") pumpstop()
|
122
|
+
|
123
|
+
elif event.code == rTrig:
|
124
|
+
|
125
|
+
for event in gamepad.read_loop():
|
126
|
+
|
127
|
+
if event.type == ecodes.EV_KEY: if event.value == 0:
|
128
|
+
|
129
|
+
if event.code == rTrig: break
|
130
|
+
|
131
|
+
elif event.type == 3 : if event.code == 0 :
|
132
|
+
|
133
|
+
if event.value == stick1: print("pump␣up")
|
134
|
+
|
135
|
+
pe = pe + 10
|
136
|
+
|
137
|
+
if (pe > 100) :
|
138
|
+
|
139
|
+
pe = 100 print("pe␣=␣%3d" %(pe))
|
140
|
+
|
141
|
+
elif event.value == stick2: print("pump␣down")
|
142
|
+
|
143
|
+
2
|
144
|
+
|
145
|
+
pe = pe - 10 if (pe < 0) :
|
146
|
+
|
147
|
+
pe = 0 print("pe␣=␣%3d" %(pe))
|
148
|
+
|
149
|
+
print("PUMP␣ON␣with␣pe␣=␣%3d" %(pe)) pump(pe)
|
150
|
+
|
151
|
+
elif event.type == 3 : if event.code == 0 :
|
152
|
+
|
153
|
+
if event.value == stick1: print("turn␣right") turn_right(in1, in2,in3,in4) temp1=0
|
154
|
+
|
155
|
+
elif event.value == stick2: print("turn␣left") turn_left(in1, in2,in3,in4) temp1=0
|
156
|
+
|
157
|
+
elif event.value == stickN: print("stick␣Neutral") stop(in1,in2,in3,in4)
|
158
|
+
|
159
|
+
if event.code == 1 :
|
160
|
+
|
161
|
+
if event.value == stick1:
|
162
|
+
|
163
|
+
print("backward") backward(in1, in2,in3,in4) temp1=0
|
164
|
+
|
165
|
+
elif event.value == stick2: print("stick␣forward") forward(in1,in2,in3,in4) temp1=1
|
166
|
+
|
167
|
+
elif event.value == stickN: print("stick␣Neutral") stop(in1,in2,in3,in4)
|
168
|
+
|
169
|
+
```
|
170
|
+
|
171
|
+
|
172
|
+
|
31
173
|
### 試したこと
|
32
174
|
|
33
175
|
|
34
176
|
|
35
|
-
if文、try文、exceptやfinalなどの例外処理
|
177
|
+
if文、try文、exceptやfinalなどの例外処理等を試しました。
|
178
|
+
|
179
|
+
前進のボタンを長押ししている間は、分岐がそれ以上進まず、前進の処理を続けています。
|
180
|
+
|
181
|
+
その途中で、障害物との距離が一定以下になっても止まらずに、ボタンから手を離して初めて停止します。
|
36
182
|
|
37
183
|
|
38
184
|
|
39
185
|
### 補足情報(FW/ツールのバージョンなど)
|
40
186
|
|
41
187
|
**よろしくお願いします!**
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
teratailを使うのもプログラミングについて他者に相談するのも初めてなので質問の仕方が上手くなくて申し訳ないです。
|