我的代码就在这里:
import datetime
import time
import math
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(20,GPIO.IN)
input = GPIO.input(20)
#initialise a previous input variable to 0 (assume button not pressed last)
prev_input = 0
D = 0.66 #wheel diameter
while True:
#take a reading
input = GPIO.input(20)
#if last was low and this one's high, do:
if ((not prev_input) and input):
end_time = datetime.datetime.now() # timestamp
s = time.mktime(end_time.timetuple())
#delta_time = s - c #difference of times ???
#instant_speed = ((math.pi * D) / delta_time) #moment speed
print 'magnet touched', s
#if LOW, do:
if ( input == 0 ):
start_time = datetime.datetime.now() #timestamp
c = time.mktime(start_time.timetuple())
print 'not touched', c
#update previous input
prev_input = input
#slight pause to debounce
#time.sleep(0.05)
我想计算自PIN20的低电平变为高电平后经过的时间,然后在我的进一步速度计数中使用时间差。 这是一个簧片开关的代码,我打算做的是将它作为速度计数器。
有人能给我一些如何计算时间的提示吗?谢谢。
答案 0 :(得分:0)
所以你只需把引脚在变量中变高的时间。当你需要访问时间时,你得到当前时间减去你之前声明的变量。
if input:
time_since_high = datetime.datetime.now()
time_passed = datetime.datetime.now() - time_since_high
答案 1 :(得分:0)
您可以执行以下操作:
import time
while input == 0:
start = time.time()
while input == 1:
stop = time.time()
# Calculate elapsed time
elapsed = stop - start
这将轮询GPIO引脚以查看输入是否从低电平变为高电平。然后它将计算从LOW变为HIGH所需的时间。时间差以秒为单位。