我无法使用 if 语句让我的 Raspberry pi 相机改变效果

I can't get my Raspbery pi camera to change effects with if statements

我正在为我的计算机科学做一个项目class。我在 raspberry pi 上安装了一个摄像头和一个距离传感器。该程序的基本思想是 pi 将从运动传感器获取读数,然后根据读数使用相机拍照并显示不同的相机效果,然后不断更新距离和图片循环。

我的问题是它会卡在第一个被激活的相机效果上,我的意思是如果距离传感器没有检测到任何东西,它会拍出没有效果的照片,如果它拾起仔细阅读它会显示负数,但如果它最初没有检测到任何东西,它会继续拍照而不管实际读数是多少。

反之亦然,如果它检测到附近有东西,它会继续显示负面图片。我假设我做错了什么与我设置循环的方式有关。

from gpiozero import DistanceSensor
from gpiozero import DistanceSensor
from time import sleep
ultrasonic = DistanceSensor(echo=17, trigger=4)
ultra = ultrasonic.distance
camera = PiCamera()
for x in range(5):
    print(ultrasonic.distance)
    sleep(2)
    while ultra == 1.0:
        camera.start_preview(alpha=192)
        sleep(5)
        camera.capture("/home/pi/final.jpg")
        camera.stop_preview()
        False 
    while ultra <= 0.05:
        camera.start_preview(alpha=192)
        camera.image_effect = 'negative'
        sleep(5)
        camera.capture("/home/pi/negativedistancefinal.jpg")
        camera.stop_preview()
        False
           
    while ultra >= 0.05:
        camera.start_preview(alpha=192)
        camera.image_effect = 'colorswap'
        sleep(5)
        camera.capture("/home/pi/colorswapdistancefinal.jpg")
        camera.stop_preview()
        
            
        

试试这个:

from gpiozero import DistanceSensor
from gpiozero import DistanceSensor
from time import sleep
ultrasonic = DistanceSensor(echo=17, trigger=4)

camera = PiCamera()
for x in range(5):
    ultra = ultrasonic.distance
    print(ultrasonic.distance)
    
    if ultra == 1.0:
        camera.start_preview(alpha=192)
        sleep(5)
        camera.capture("/home/pi/final.jpg")
        camera.stop_preview()
        
    elif ultra <= 0.05:
        camera.start_preview(alpha=192)
        camera.image_effect = 'negative'
        sleep(5)
        camera.capture("/home/pi/negativedistancefinal.jpg")
        camera.stop_preview()
        
           
    elif ultra >= 0.05:
        camera.start_preview(alpha=192)
        camera.image_effect = 'colorswap'
        sleep(5)
        camera.capture("/home/pi/colorswapdistancefinal.jpg")
        camera.stop_preview()
    sleep(2)

您需要更新您的读数并用 if 代替 while