当我运行这个程序时(它应该每3秒打开和关闭一次输出),但是“enable”值保持为0并且在def be()运行期间不会变为1。如果您只是尝试progremyou将只看到它写“开”。 请帮助,因为我是python的初学者。
import threading
import os
import smbus
from threading import Timer
from time import sleep
bus = smbus.SMBus(1) # Rev 2 Pi uses 1
DEVICE = 0x20 # Device address (A0-A2)
IODIRA = 0x00 # Pin direction register
OLATA = 0x14 # Register for outputs
GPIOA = 0x12 # Register for inputs
bus.write_byte_data(DEVICE,OLATA,0)
enable = 0
beki = 1
be = 0
ki=0
def be():
print "on"
bus.write_byte_data(DEVICE,OLATA,1)
sleep(0.2)
enable=1
def ki():
print "off"
bus.write_byte_data(DEVICE,OLATA,0)
sleep(0.1)
enable=0
while True:
if(enable==0):
on = threading.Timer(3, be)
on.start()
if(enable==1):
off = threading.Timer(3, ki)
off.start()
sleep(0.01)
答案 0 :(得分:1)
您正在更改函数中的局部变量。要更改全局变量,您需要使用global
关键字,例如:
def be():
global enable
# ...
enable = 1