Python 3.x Python3控制RPi/Piface

Python 3.x Python3控制RPi/Piface,python-3.x,raspberry-pi2,Python 3.x,Raspberry Pi2,第一个帖子。我已经搜索过了,找不到太多关于这个的信息,希望这里有人能帮上忙 作为背景,我正在建立一个pitstop计时系统,以帮助赛车手在比赛中使用车轮枪/反应。希望您能在图片中看到,有四个轴,每个轴都有一个LED,每个轴都有开关 我正在编写一个脚本,用Rpi、Piface Digital 2运行一个基本的反应计时器,并用Python驱动它。我让第一次迭代工作,因为它读取数字输入,并驱动数字输出。我现在想让它运行scriput 5次,读取数字输入并将其存储在变量中。如果有人能学会Python,我

第一个帖子。我已经搜索过了,找不到太多关于这个的信息,希望这里有人能帮上忙

作为背景,我正在建立一个pitstop计时系统,以帮助赛车手在比赛中使用车轮枪/反应。希望您能在图片中看到,有四个轴,每个轴都有一个LED,每个轴都有开关

我正在编写一个脚本,用Rpi、Piface Digital 2运行一个基本的反应计时器,并用Python驱动它。我让第一次迭代工作,因为它读取数字输入,并驱动数字输出。我现在想让它运行scriput 5次,读取数字输入并将其存储在变量中。如果有人能学会Python,我会非常棒

    #!/usr/bin/env python3
    # Pit Stop Reaction Timer

    from time import sleep
    from timeit import default_timer as timer
    import random
    from random import randrange, uniform
    import pifacedigitalio as pifacedigital
    import sys

    pifacedigital.init()
    leds = [1, 2, 3, 4]
    randomNumber1 = [0, 3 , 2, 1, 1, 2, 3, 0, 0, 2, 3, 1, 1, 3, 0, 2]
    randomNumber2 = [2, 4, 6, 8, 4, 3, 8, 12, 10, 11, 9, 8, 6, 7, 10, 5]
    randomLED = random.choice(randomNumber1)
    randomFlash = random.choice(randomNumber2)

    sleepTime = 0.1  # the time in seconds
    rounds = 8
    button4 = 0
    button5 = 1
    button6 = 2
    button7 = 3



   def ledFlash(times, interval):
       i = 0
       # repeat times times ...
       while i < times:
           # turn on LED 1 to 4
           for led in leds:
           pifacedigital.digital_write(0, 0)
           pifacedigital.digital_write(1, 0)
           pifacedigital.digital_write(2, 0)
           pifacedigital.digital_write(3, 0)
           sleep(interval)

          # turn off LED 0 to 4 one at a time with interval intervals ...
           for led in leds:
           pifacedigital.digital_write(0, 1)
           pifacedigital.digital_write(1, 1)
           pifacedigital.digital_write(2, 1)
           pifacedigital.digital_write(3, 1)
           sleep(interval)

       i += 1


     print("Menu:")
     print("=====")
     print("External Button: Start Pit Stop Sim")
     print()
     print("Select the correct hub with the gun to stop the timer")

     while True:
       if pifacedigital.digital_read(0):
       ledFlash(randomFlash, sleepTime)
       pifacedigital.digital_write(randomLED, 0)
       start = timer()
       print("Random LED result", randomLED)
       print("Random number of LED flashes result", randomFlash)
    elif pifacedigital.digital_read(4) and button4 == randomLED:
       end = timer()
       print(end-start)
       sys.exit()
    elif pifacedigital.digital_read(5) and button5 == randomLED:
       end = timer()
       print(end-start)
       sys.exit()
    elif pifacedigital.digital_read(6) and button6 == randomLED:
       end = timer()
       print(end-start)
       sys.exit()
    elif pifacedigital.digital_read(7) and button7 == randomLED:
       end = timer()
       print(end-start)
       sys.exit()
#/usr/bin/env蟒蛇3
#停坑反应计时器
从时间上导入睡眠
从timeit导入默认\u计时器作为计时器
随机输入
从随机范围,均匀
将pifacedigital IO导入为pifacedigital
导入系统
pifacedigital.init()
发光二极管=[1,2,3,4]
randomNumber1=[0,3,2,1,1,2,3,0,0,2,3,1,1,3,0,2]
randomNumber2=[2,4,6,8,4,3,8,12,10,11,9,8,6,7,10,5]
randomLED=随机。选择(randomNumber1)
随机闪光=随机。选择(随机数2)
睡眠时间=0.1#以秒为单位的时间
轮数=8
按钮4=0
按钮5=1
按钮6=2
按钮7=3
def LED闪烁(次数、间隔):
i=0
#重复几次。。。
而我<次:
#打开LED 1至4
对于led中的led:
pifacedigital.数字写入(0,0)
pifacedigital.数字写入(1,0)
pifacedigital.数字写入(2,0)
pifacedigital.数字写入(3,0)
睡眠(间歇)
#按间隔一次关闭LED 0至4。。。
对于led中的led:
pifacedigital.digital_写入(0,1)
pifacedigital.数字写入(1,1)
pifacedigital.数字写入(2,1)
pifacedigital.数字写入(3,1)
睡眠(间歇)
i+=1
打印(“菜单:”)
打印(“====”)
打印(“外部按钮:启动停坑Sim”)
打印()
打印(“用枪选择正确的轮毂以停止计时器”)
尽管如此:
如果pifacedigital.digital_读取(0):
LED闪烁(随机闪烁,睡眠时间)
pifacedigital.数字写入(随机发光二极管,0)
开始=计时器()
打印(“随机LED结果”,随机LED)
打印(“随机LED闪烁次数结果”,随机闪烁)
elif pifacedigital.digital_读取(4)和按钮4==随机发光二极管:
结束=计时器()
打印(结束-开始)
sys.exit()
elif pifacedigital.digital_读取(5)和按钮5==随机发光二极管:
结束=计时器()
打印(结束-开始)
sys.exit()
elif pifacedigital.digital_读取(6)和按钮6==随机发光二极管:
结束=计时器()
打印(结束-开始)
sys.exit()
elif pifacedigital.digital_读取(7)和按钮7==随机发光:
结束=计时器()
打印(结束-开始)
sys.exit()
任何关于使用循环使其迭代5次的指针,我都可以测量并取平均值

非常感谢


乔。

您的缩进已关闭。你把代码复制正确了吗?如果是,脚本是否运行?(我会感到惊讶)。如果没有,请修复。首先,感谢您的回复。缩进是关闭的,因为我不知道如何复制粘贴在这里,并将其全部捣碎。该脚本在RPi上运行良好。我已经找到了解决方法,这不是最漂亮的方法,它只是通过一系列的while循环,每次都增加一个增量。我将在周一发布工作代码。(缩进正确!),再次感谢您的回复。很好,不客气。
randomNumber
1和2包含重复的原因是什么?这意味着有18.75%的几率
randomFlash
为8,但只有6.25%的几率为2。当然,这可能是有意为之,但如果不是,您可以简单地删除列表并改为写入
randomLED=random.randint(0,3)
randomlash=random.randint(2,12)
。此外,如果希望每个循环都有一个新的随机数,那么应该将对random的调用放在while循环中。总而言之,我认为你想做的很简单,但我不确定我是否完全理解最终目标……顺便说一句,有趣的项目!:)