如何在程序中测试GPIO中断向下设置的“全局”变量的值

2024-06-15 09:42:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用一个变量“lifeflag”,该变量由GPIO中断设置为1,并在“if pin==”1”块中清除

然后,当pin从程序中的其他位置变为=2时,应在“if pin==”2”块中执行代码“if lifeflag==1”

抛出错误“启动程序时未为lifeflag分配值”(引脚==“1”时的块不一定已执行。)

尝试在程序顶部的某个位置添加“lifeflag=0”-包括“全局”或不包括- 我仍然在赋值之前引用了错误“局部变量lifeflag”

有什么办法可以让它工作吗

import RPi.GPIO as rpigpio
rpigpio.setmode(rpigpio.BCM)
rpigpio.setup(6, rpigpio.IN, pull_up_down=rpigpio.PUD_UP) 

def my_callback(channel): 
    lifeflag=1
    print("lifeflag=",lifeflag)

rpigpio.add_event_detect(6, rpigpio.FALLING, callback=my_callback, bouncetime=300)

    if pin == "1" :
        print(pin)
    lifeflag=0

    if pin == "2" :
        ret,frame=cam.read()
        cv2.imshow("Capturing",frame)
        print("237=",pin)
        rpigpio.output(20,rpigpio.HIGH)

        if lifeflag == 1:
            print("247=")
            rpigpio.output(20,rpigpio.LOW)
            pygame.display.update()

Tags: 代码程序outputgpioifmy错误callback