我正在使用Raspberry Pi 2和面包板制作一个莫尔斯电码解释器。电路是一个简单的按钮,按下时会点亮LED。如何使用函数来计算按钮的按下时间?
答案 0 :(得分:0)
你没有提供足够的电路细节来确定你的特定用例,所以我建议如下(我将以我的代码为基础):
然后我会编写代码来监控引脚并将每次按下的时间记录到列表中。您可以按相同的顺序读出值,这样您就可以处理时间并从中解释代码。
import RPi.GPIO as GPIO
import time
# set up an empty list for the key presses
presses = []
# set up the GPIO pins to register the presses and control the LED
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.OUT)
GPIO.setup(11, GPIO.IN)
# turn LED off initially
GPIO.output(12, False)
while True:
# wait for input to go 'low'
input_value = GPIO.input(11)
if not input_value:
# log start time and light the LED
start_time = time.time()
GPIO.output(12, True)
# wait for input to go high again
while not input_value:
input_value = GPIO.input(11)
else:
# log the time the button is un-pressed, and extinguish LED
end_time = time.time()
GPIO.output(12, False)
# store the press times in the list, as a dictionary object
presses.append({'start':start_time, 'end':end_time})
你将看到一个如下所示的列表:
[{start:123234234.34534,end:123234240.23482},{start:123234289.96841,end:123234333.12345}]
您在此处看到的数字以秒为单位(这是您的系统时间,自纪元以来以秒为单位)。
然后你可以使用for循环遍历列表中的每个项目,从开始时间减去每个结束时间,当然从上一个结束时减去下一个按下的开始,这样你就可以根据印刷机之间的间隙组装字符和单词。玩得开心: - )