首页 > 解决方案 > Python> 如何:从第二个“while True”返回到第一个“while True”?

问题描述

我为我的 Orange PI win 编写了简单的 while 循环来控制 5 个 LED,但我不知道如何在 true 时从第一个循环返回。现在第二个循环程序结束后我想回到第一个循环

你能建议怎么做吗?

import os
import time
os.system("echo 37 > /sys/class/gpio/export,echo out > /sys/class/gpio/gpio37/direction,echo 38 > /sys/class/gpio/export,echo out > /sys/class/gpio/gpio38/direction,echo 39 > /sys/class/gpio/export,echo out > /sys/class/gpio/gpio39/direction,echo 101 > /sys/class/gpio/export,echo out > /sys/class/gpio/gpio101/direction,echo 36 > /sys/class/gpio/export,echo out > /sys/class/gpio/gpio36/direction")

#zmienne
sl ="sleep 0.5"
i = 1
imax = 10
y = 0.2
z = 0.1
val = 10 
value = 1

L1_On = "echo 1 > /sys/class/gpio/gpio37/value"
L1_Off = "echo 0 > /sys/class/gpio/gpio37/value"
L2_On = "echo 1 > /sys/class/gpio/gpio38/value"
L2_Off = "echo 0 > /sys/class/gpio/gpio38/value"
L3_On = "echo 1 > /sys/class/gpio/gpio39/value"
L3_Off = "echo 0 > /sys/class/gpio/gpio39/value"
L4_On = "echo 1 > /sys/class/gpio/gpio101/value"
L4_Off = "echo 0 > /sys/class/gpio/gpio101/value"
L5_On = "echo 1 > /sys/class/gpio/gpio36/value"
L5_Off = "echo 0 > /sys/class/gpio/gpio36/value"


timeout = time.time() + 5 # 5 seconds   
while True: 

    print ("2 prog", i)
    os.system(L1_On)
    time.sleep (z)
    os.system(L1_Off)
    #time.sleep (y)
    os.system(L2_On)
    time.sleep (z)
    os.system(L2_Off)
    #time.sleep (y)
    os.system(L3_On)
    time.sleep (z)
    os.system(L3_Off)
    #time.sleep (y)
    os.system(L4_On)
    time.sleep (z)
    os.system(L4_Off)
    #time.sleep (y)
    os.system(L5_On)
    time.sleep (z)
    os.system(L5_Off)
    #time.sleep(y)
    if time.time() > timeout:
        break
        continue
#right follow
timeout = time.time() + 5 # 5 seconds   
while True: 

    print ("2 prog", i)
    os.system(L5_On)
    time.sleep (z)
    os.system(L5_Off)
    #time.sleep (y)
    os.system(L4_On)
    time.sleep (z)
    os.system(L4_Off)
    #time.sleep (y)
    os.system(L3_On)
    time.sleep (z)
    os.system(L3_Off)
    #time.sleep (y)
    os.system(L2_On)
    time.sleep (z)
    os.system(L2_Off)
    #time.sleep (y)
    os.system(L1_On)
    time.sleep (z)
    os.system(L1_Off)
    #time.sleep(y)
    if time.time() > timeout:
        break
        continue

标签: python

解决方案


尝试将两个循环放在另一个while True:循环中,即:

import os
import time
os.system("echo 37 > /sys/class/gpio/export,echo out > /sys/class/gpio/gpio37/direction,echo 38 > /sys/class/gpio/export,echo out > /sys/class/gpio/gpio38/direction,echo 39 > /sys/class/gpio/export,echo out > /sys/class/gpio/gpio39/direction,echo 101 > /sys/class/gpio/export,echo out > /sys/class/gpio/gpio101/direction,echo 36 > /sys/class/gpio/export,echo out > /sys/class/gpio/gpio36/direction")

#zmienne
sl ="sleep 0.5"
i = 1
imax = 10
y = 0.2
z = 0.1
val = 10 
value = 1

L1_On = "echo 1 > /sys/class/gpio/gpio37/value"
L1_Off = "echo 0 > /sys/class/gpio/gpio37/value"
L2_On = "echo 1 > /sys/class/gpio/gpio38/value"
L2_Off = "echo 0 > /sys/class/gpio/gpio38/value"
L3_On = "echo 1 > /sys/class/gpio/gpio39/value"
L3_Off = "echo 0 > /sys/class/gpio/gpio39/value"
L4_On = "echo 1 > /sys/class/gpio/gpio101/value"
L4_Off = "echo 0 > /sys/class/gpio/gpio101/value"
L5_On = "echo 1 > /sys/class/gpio/gpio36/value"
L5_Off = "echo 0 > /sys/class/gpio/gpio36/value"


while True:
    timeout = time.time() + 5 # 5 seconds   
    while True: 

        print ("2 prog", i)
        os.system(L1_On)
        time.sleep (z)
        os.system(L1_Off)
        #time.sleep (y)
        os.system(L2_On)
        time.sleep (z)
        os.system(L2_Off)
        #time.sleep (y)
        os.system(L3_On)
        time.sleep (z)
        os.system(L3_Off)
        #time.sleep (y)
        os.system(L4_On)
        time.sleep (z)
        os.system(L4_Off)
        #time.sleep (y)
        os.system(L5_On)
        time.sleep (z)
        os.system(L5_Off)
        #time.sleep(y)
        if time.time() > timeout:
            break
            continue
    #right follow
    timeout = time.time() + 5 # 5 seconds   
    while True: 

        print ("2 prog", i)
        os.system(L5_On)
        time.sleep (z)
        os.system(L5_Off)
        #time.sleep (y)
        os.system(L4_On)
        time.sleep (z)
        os.system(L4_Off)
        #time.sleep (y)
        os.system(L3_On)
        time.sleep (z)
        os.system(L3_Off)
        #time.sleep (y)
        os.system(L2_On)
        time.sleep (z)
        os.system(L2_Off)
        #time.sleep (y)
        os.system(L1_On)
        time.sleep (z)
        os.system(L1_Off)
        #time.sleep(y)
        if time.time() > timeout:
            break
            continue

推荐阅读