如何在python脚本中获得方波的频率

如何在python脚本中获得方波的频率,python,raspberry-pi,hardware,signal-processing,gpio,Python,Raspberry Pi,Hardware,Signal Processing,Gpio,我正在使用TSL235()光频转换器和树莓Pi。传感器的输出为方波(占空比50%),频率与光强度成正比 所以我需要知道(在python脚本中)哪个频率到达Raspberry Pi的输入GPIO引脚 我只找到了一个C代码的教程(),但我不懂C。。。我只使用python 到目前为止,读取GPIO输入并不难: #!/usr/bin/python import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(25, GPIO.IN) impuls

我正在使用TSL235()光频转换器和树莓Pi。传感器的输出为方波(占空比50%),频率与光强度成正比

所以我需要知道(在python脚本中)哪个频率到达Raspberry Pi的输入GPIO引脚

我只找到了一个C代码的教程(),但我不懂C。。。我只使用python

到目前为止,读取GPIO输入并不难:

#!/usr/bin/python
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.IN)

impuls_count = 0
# Do next lines for i.e. 1000ms:
GPIO.wait_for_edge(25, GPIO.FALLING)
impuls_count = impuls_count + 1

我想我必须在一段时间内计算信号。但是怎么做呢?

使用时间模块。它有一个对1微秒(1 MHz)敏感的时钟功能。看看你的传感器的数据表,它只上升到500千赫,这应该是足够的分辨率,以获得准确的频率测量在高光强度

只需计算一组输入周期的平均频率

import time

NUM_CYCLES = 10
start = time.time()
for impulse_count in range(NUM_CYCLES):
    GPIO.wait_for_edge(25, GPIO.FALLING)
duration = time.time() - start      #seconds to run for loop
frequency = NUM_CYCLES / duration   #in Hz

那么文件上怎么说?(链接?)这将作为一个“给我代码”类型的问题被严重否决/煽动/关闭。或者,如果它是关于与硬件接口的细节,那么它就不是主题,应该迁移。您能否至少向我们展示一下您尝试从输入GPIO引脚读取信号的代码?链接到任何相关的文档或教程。不,我不想要完整的代码。但是我不知道如何在python脚本中“从技术上”获得频率。然后,a)向我们展示您尝试从输入GPIO引脚读取信号的代码b)指向任何相关文档或教程的链接另请参见,我用GPIO输入的简单代码和找到的唯一教程的链接更新了帖子。太棒了!使用下降或上升是否有区别?我是否必须设置“pull\u up\u down=GPIO.PUD\u up”?哪条边应该无关紧要,但您应该尝试每一条边,看看您是否更喜欢其中一条边的结果。根据传感器数据表第5页的示意图,它看起来像是默认值
pull\u up\u down=GPIO.PUD\u OFF
,因为传感器设计为直接与微控制器I/O引脚接口。非常感谢您的帮助!脉冲计数代表什么?我认为这是不必要的。