我有一个在树莓派上运行的程序,其中有2个输入,一个1Hz信号和一个50Hz信号。 我正在记录从50Hz信号的上升沿到1Hz信号的上升沿所经过的时间,然后计算相位差。 我想用键来表示50Hz波形上升沿的当前时间,并且该值应该是相对于1Hz信号的相位差。
这是我的代码:
import pigpio
import time
import math
from datetime import datetime
counter = 0
1HZ_PIN = 23
50HZ_PIN = 24
pi = pigpio.pi()
d = {}
pi.set_mode(1HZ_PIN, pigpio.INPUT)
pi.set_pull_up_down(1HZ_PIN, pigpio.PUD_UP)
pi.set_mode(50HZ_PIN, pigpio.INPUT)
pi.set_pull_up_down(50HZ, pigpio.PUD_UP)
while True:
if pi.wait_for_edge(1HZ_PIN, pigpio.RISING_EDGE):
print 'PPS Rising edge'
t1 = datetime.now()
print t1
counter = 0
while pi.wait_for_edge(50HZ_PIN, pigpio.RISING_EDGE) and counter <50):
d = {}
counter = counter + 1
print 'Voltage Sinusoid rising edge'
print datetime.now()
x = datetime.now()
x.isoformat() # I added this line as you can't place datetime objects in a dictionary
elapsed_time = x - t1
elapsed_time_float = elapsed_time.total_seconds() # can't prerform arithmetic operations on datetime object
phase = elapsed_time_float / 0.02/360
d[x] = phase
我推测的最后一行将把每个记录的上升沿时间作为键,并将相应的相位差作为值。 但是,当我按预期方式打印列表时,字典中有50个键/值对,但它们与打印的上升沿时间不匹配。 是否有适当的方法可以将while循环中的变量放入字典中?