下面是一小段python代码。。它是用来读取光或暗的传感器。我想它做什么,当值下降到低于500打印“轻”和当它高于500打印“暗”。这很管用,但每次阅读都要重复课文。。而我只想在一个改变的时候打印出来。。有人知道怎么做吗?我做了不少shell编程。。但不知怎么的,这个简单的问题我无法用python完成。。在
#!/usr/bin/python
import RPi.GPIO as GPIO, time
GPIO.setmode(GPIO.BCM)
# Define function to measure charge time
def RCtime (PiPin):
measurement = 0
# Discharge capacitor
GPIO.setup(PiPin, GPIO.OUT)
GPIO.output(PiPin, GPIO.LOW)
time.sleep(0.1)
GPIO.setup(PiPin, GPIO.IN)
# Count loops until voltage across
# capacitor reads high on GPIO
last = 9
while (GPIO.input(PiPin) == GPIO.LOW):
measurement += 1
if measurement < 500:
print last
if last == 0:
print "light"
last = 1
if measurement >500:
print "dark"
last = 0
print last
return measurement
# Main program loop
while True:
print RCtime(4) # Measure timing using GPIO4
我使用一个名为
readings
的列表模拟传感器的读数,其余代码可以直接转换为您的用例输出
^{pr2}$我想你在if-measurement<;500:condition中的想法是正确的,只在最后一次不同的时候才打印“light”。您只需在>;500条件下重复类似的逻辑即可。但真正的问题是最后一个是一个局部变量,所以每次调用时该值都会重置为9。因此,需要删除last=9,并在函数外部定义last,并在函数内部声明为global:
由于每个函数的执行都返回值,所以我认为最好的办法是在while循环中比较它,并将函数只用于获取数据。在
大致如下:
否则,返回
last
的值,然后在下次调用函数时将其传递也是一个可接受的解决方案。在相关问题 更多 >
编程相关推荐