回答編集履歴

1

追記

2021/09/26 11:58

投稿

thkana
thkana

スコア7652

test CHANGED
@@ -151,3 +151,95 @@
151
151
 
152
152
 
153
153
  あとは自力でできるかしら。
154
+
155
+
156
+
157
+ ---
158
+
159
+ > 改良点などあればお願い致します。
160
+
161
+
162
+
163
+ 私はPythonは決して得意ではないのであまりどうこうは言えませんが、特に問題はないんじゃないでしょうか。
164
+
165
+ 多少手を入れるとしたらこんなところでしょうか。
166
+
167
+ ```
168
+
169
+ import utime
170
+
171
+ import random
172
+
173
+
174
+
175
+ led1 = machine.Pin(0,machine.Pin.OUT)
176
+
177
+ led2 = machine.Pin(1,machine.Pin.OUT)
178
+
179
+ led3 = machine.Pin(2,machine.Pin.OUT)
180
+
181
+
182
+
183
+ switch1 = machine.Pin(3,machine.Pin.IN,machine.Pin.PULL_UP)
184
+
185
+ switch2 = machine.Pin(4,machine.Pin.IN,machine.Pin.PULL_UP)
186
+
187
+ switch3 = machine.Pin(5,machine.Pin.IN,machine.Pin.PULL_UP)
188
+
189
+
190
+
191
+ pairList = [(led1,switch1),(led2,switch2),(led3,switch3)] #タプルでペアにする
192
+
193
+
194
+
195
+ score = 0
196
+
197
+
198
+
199
+ while True:
200
+
201
+ i = random.randint(0,2)
202
+
203
+ x = pairList[i]
204
+
205
+
206
+
207
+ x[0].value(1) #x[0]はledn
208
+
209
+ flag = False
210
+
211
+ for n in range(100):
212
+
213
+ utime.sleep(0.01)
214
+
215
+
216
+
217
+ if (x[1].value() == 0 ): #x[1]はswitchn。選択されているスイッチだけ監視する
218
+
219
+ flag = True
220
+
221
+
222
+
223
+ x[0].value(0)
224
+
225
+ utime.sleep(1)
226
+
227
+ if ( flag ): # flagが論理型の値なので==Trueはあっても害は無いが意味もない
228
+
229
+ score += 1
230
+
231
+ print(score)
232
+
233
+
234
+
235
+ if (score > 2): #==3でもいいけれど、扱いを間違えて値が大きくなっても終われるように
236
+
237
+ break
238
+
239
+
240
+
241
+ while True: #明示的にプログラム内に留める
242
+
243
+ pass
244
+
245
+ ```