gpt4 book ai didi

Python 通过按下 Wiimote 按钮退出循环

转载 作者:太空宇宙 更新时间:2023-11-03 17:05:25 26 4
gpt4 key购买 nike

我正在编写一个 python 脚本,它将使用 cwiid 库通过 Wiimote 控制 LED。该程序识别 Wiimote 并能够启动循环,但当用户按 Remote 上的“B”时,它不会让我停止循环。这是相关代码,如果需要,我可以提供脚本的其余部分。谢谢。

  buttons = wii.state['buttons']

...

  if (buttons & cwiid.BTN_A):
print 'Button A pressed'
print 'Press B to cancel loop'
keepRunning = True
while keepRunning:
blink(32)#5v green
blink(38)#5v yellow
blink(36)#5v blue
blink(40)#5v red
blink(37)#3v3 green
blink(35)#3v3 yellow
blink(33)#3v3 blue
blink(31)#3v3 red
if (buttons & cwiid.BTN_B):
keepRunning = False
time.sleep(button_delay)

这是斯图尔特答案的固定循环

  if (buttons & cwiid.BTN_A):
print 'Button A pressed'
print 'Press B to cancel loop'
keepRunning = True
while keepRunning:
blink(32)#5v green
blink(38)#5v yellow
blink(36)#5v blue
blink(40)#5v red
blink(37)#3v3 green
blink(35)#3v3 yellow
blink(33)#3v3 blue
blink(31)#3v3 red
buttons = wii.state['buttons']#added in this line
if (buttons & cwiid.BTN_B):
keepRunning = False
time.sleep(button_delay)

最佳答案

wii.state['buttons'] 似乎是一个数字,因此将其存储在变量 buttons 中意味着当用户按下不同的按钮时它不再更新按钮组合。

要解决此问题,只需每次将 buttons 替换为对 wii.state['buttons'] 的直接引用即可。

您可能需要考虑检查每次闪烁后是否按下了 B,如下所示:

from itertools import cycle
...
if wii.state['buttons'] & cwiid.BTN_A:
print 'Button A pressed'
print 'Press B to cancel loop'
for colour in cycle([32, 38, 36, 40, 37, 35, 33, 31]):
blink(colour)
if wii.state['buttons'] & cwiid.BTN_B:
break
time.sleep(button_delay)

关于Python 通过按下 Wiimote 按钮退出循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34640336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com