如何在python

时间:2016-06-05 11:46:31

标签: python time count

我的代码就在这里:

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的低电平变为高电平后经过的时间,然后在我的进一步速度计数中使用时间差。 这是一个簧片开关的代码,我打算做的是将它作为速度计数器。

有人能给我一些如何计算时间的提示吗?谢谢。

2 个答案:

答案 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所需的时间。时间差以秒为单位。