Python 2.7 树莓皮计数器赢得';不要停止计数

Python 2.7 树莓皮计数器赢得';不要停止计数,python-2.7,raspberry-pi,counter,Python 2.7,Raspberry Pi,Counter,我正在做一个Raspberry Pi项目,理想情况下,每次我的光束中断传感器被破坏时都会计数。我几乎可以肯定所有的硬件都设置正确 我的代码目前发生的情况是,当光束未被破坏时,计数器会上升,当光束被破坏时,计数器会继续计数,但速度要快得多。有人知道为什么即使光束没有断开,计数器也在计数吗 (到目前为止,我并不担心去Bouncing,我想先解决上述问题) 将RPi.GPIO导入为GPIO 导入时间 光束中断=7 GPIO.setmode(GPIO.BCM) GPIO.setup(光束中断,GPIO.

我正在做一个Raspberry Pi项目,理想情况下,每次我的光束中断传感器被破坏时都会计数。我几乎可以肯定所有的硬件都设置正确


我的代码目前发生的情况是,当光束未被破坏时,计数器会上升,当光束被破坏时,计数器会继续计数,但速度要快得多。有人知道为什么即使光束没有断开,计数器也在计数吗

(到目前为止,我并不担心去Bouncing,我想先解决上述问题)

将RPi.GPIO导入为GPIO
导入时间
光束中断=7
GPIO.setmode(GPIO.BCM)
GPIO.setup(光束中断,GPIO.IN)
尝试:
框=0
当盒子<10000时:
如果(GPIO.input(BeamBreak)=False):
盒子=盒子+1
打印(框)
其他:
盒子=盒子
除键盘中断外:
GPIO.cleanup()

“为什么即使光束未被破坏,计数器仍在计数?”因为这就是该代码的目的
if(GPIO.input(BeamBreak)==False)
增加1,直到它等于
10000
。另外,如果不是GPIO.input(BeamBreak),请选择
,它要干净得多。我按照你告诉我的那样把它清理干净了。代码应该说,当光束被破坏时(来自BeamBreak的输入为假),只进行计数(并在10000处停止),那么为什么当光束未被破坏时计数器会上升?几乎可以肯定,当光束显然未被破坏时,会有一些非常窄的“破坏”脉冲。当它在未损坏的情况下计数时,当“未损坏”时,它的滴答声有多快?你能把你的光源移近传感器吗?这会不会降低未损坏时的计数率?您可能必须添加延迟的去盎司(即过滤),以确保您不计算小于阈值的“中断”期。
import RPi.GPIO as GPIO
import time

BeamBreak = 7
GPIO.setmode(GPIO.BCM)
GPIO.setup(BeamBreak, GPIO.IN)

try:
    boxes = 0
    while boxes < 10000:
        if(GPIO.input(BeamBreak)==False):
            boxes = boxes + 1
            print(boxes)
        else:
            boxes = boxes
except KeyboardInterrupt:
    GPIO.cleanup()