![](/img/trans.png)
[英]Python low-level vs high-level performance (running time analysis of palindrome functions)
[英]how to count the time from LOW to HIGH pin level in python
我在这里有此代码:
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的低电平变为高电平以来经过的时间,然后在进一步的速度计数中使用时间差。 这是簧片开关的代码,我打算做的是使其成为速度计数器。
谁能给我一个关于如何计算时间的提示? 谢谢。
因此,您只需将引脚变为高电平的时间输入变量。 当您需要访问时间时,将获得当前时间减去您先前声明的变量。
if input:
time_since_high = datetime.datetime.now()
time_passed = datetime.datetime.now() - time_since_high
您可以执行以下操作:
import time
while input == 0:
start = time.time()
while input == 1:
stop = time.time()
# Calculate elapsed time
elapsed = stop - start
这将轮询GPIO引脚以查看输入是否从LOW变为HIGH。 然后它将计算从低到高所需的时间。 时间差以秒为单位。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.