繁体   English   中英

如何在python中从低到高引脚电平计算时间

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM