我想获得一个合理的电机转速。如果侦测到一个穿过的缝隙,我会有一个光电断续器发送0或1。我的代码如下,我只需要时间0-60秒,并添加检测次数1,然后除以60,即RPM。Python中的倒数计时器(树莓派电机每分钟转数)
我不想让我的代码复杂化,也请记住,这是在Raspberry Pi上运行的,其中包含许多其他脚本和Web服务器。所以不是一个糟糕的代码,比如“睡眠”会占用整个CPU。
我不是在寻找疯狂的准确测量,只是一个合理的想法,即电机旋转的速度。狭缝尺寸是否也有所不同?
import RPi.GPIO as GPIO
import time
signal = 21
from time import sleep # this lets us have a time delay (see line 15)
GPIO.setmode(GPIO.BCM) # set up BCM GPIO numbering
GPIO.setup(signal, GPIO.IN) # set GPIO21 as input (signal)
GPIO.add_event_detect(signal,GPIO.BOTH)
try:
while True: # this will carry on until you hit CTRL+C
if GPIO.event_detected(signal): # if port 21 == 1
print "Port 21 is 1/HIGH/True - LED ON"
slit=slit+1 # Counts every time slit passes
else:
print "Port 21 is 0/LOW/False - LED OFF"
rpm = slit/60 # Calculates the RPM
sleep(0.0001) # wait 0.0001 seconds
finally: # this block will run no matter how the try block exits
GPIO.cleanup() # clean up after yourself
'sleep'与CPU占用相反。它将释放它来完成其他任务。所以,这将是一个很好的解决方案,但是你不能确定你准确地睡了60秒。它可能会更多一些,所以如果你想得到更精确的值,你应该尝试去获得一些时间戳和校正偏移量。 – JohanL
@JohanL谢谢,但我将如何实现它? –