閲覧ありがとうございます。
現在、ラズベリーパイピコを使って電子工作を行っており、その際のpythonのコードについてご質問させていただきます。
電子工作の内容が、
・ランダムに3っつのLEDを点滅させる。
・LEDが点滅した箇所のタクトスイッチを押すとスコアが1点加算される。
・スコアが3点になるとbreaksする
というものです。
問題は、タクトスイッチを押すタイミングがLED点灯の瞬間でないとスコアが加算されません。
点灯の間隔は1秒にしているのですが、点灯した瞬間出なければ、LEDが光っていても反応しません。
LED点灯中であればどのタイミングでも反応するようにしたいのですが、分からず質問させていただきました。
アドバイスお願い致します。
import machine import utime import random led1 = machine.Pin(0,machine.Pin.OUT) led2 = machine.Pin(1,machine.Pin.OUT) led3 = machine.Pin(2,machine.Pin.OUT) score = 0 i = [led1,led2,led3] switch1 = machine.Pin(3,machine.Pin.IN,machine.Pin.PULL_UP) switch2 = machine.Pin(4,machine.Pin.IN,machine.Pin.PULL_UP) switch3 = machine.Pin(5,machine.Pin.IN,machine.Pin.PULL_UP) while True: print(score) print(switch1.value()) print(switch2.value()) print(switch3.value()) x = random.choice(i) print(x) x.value(1) utime.sleep(1) x.value(0) utime.sleep(1) if (x == machine.Pin(0,machine.Pin.OUT)): if (switch1.value() == 0 ): score += 1 elif (x == machine.Pin(1,machine.Pin.OUT)): if (switch2.value() == 0 ): score += 1 elif (x == machine.Pin(2,machine.Pin.OUT)): if (switch3.value() == 0 ): score += 1 if score == 2: break
y_waiwai様、thkana様回答、アドバイス本当にありがとうございました!!!
以下、ご指摘を参考に修正したコードです。
現時点では思ったように動作しております。
改良点などあればお願い致します。
import
1import utime 2import random 3 4led1 = machine.Pin(0,machine.Pin.OUT) 5led2 = machine.Pin(1,machine.Pin.OUT) 6led3 = machine.Pin(2,machine.Pin.OUT) 7 8switch1 = machine.Pin(3,machine.Pin.IN,machine.Pin.PULL_UP) 9switch2 = machine.Pin(4,machine.Pin.IN,machine.Pin.PULL_UP) 10switch3 = machine.Pin(5,machine.Pin.IN,machine.Pin.PULL_UP) 11 12score = 0 13 14flag = False 15 16ledlist = [led1,led2,led3] 17 18 19 20 21while True: 22 i = random.randint(0,2) 23 x = ledlist[i] 24 25 x.value(1) 26 for n in range(100): 27 utime.sleep(0.01) 28 29 if (led1.value() == 1): 30 if (switch1.value() == 0 ): 31 flag = True 32 33 if (led2.value() == 1): 34 if (switch2.value() == 0 ): 35 flag = True 36 37 if (led3.value() == 1): 38 if (switch3.value() == 0 ): 39 flag = True 40 41 x.value(0) 42 utime.sleep(1) 43 if (flag == True): 44 score += 1 45 flag = False 46 print(score) 47 48 if (score == 3): 49 break 50
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/26 09:52 編集
2021/09/26 09:41
2021/09/26 09:53 編集
2021/09/26 13:07
2021/09/26 13:18
2021/09/26 14:20