我正在使用TSL235(http://www.ti.com/lit/ds/symlink/tsl235.pdf)光频转换器和Raspberry Pi.传感器的输出是方波(50%占空比),其频率与光强度成正比.
所以我需要知道(在python脚本中)哪个频率到达Raspberry Pi的输入GPIO-Pin.
我只找到了一个教程(http://playground.arduino.cc/Main/TSL235R),它显示了一个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 kHz,这应该是足够的分辨率,以便在高光强度下获得准确的频率测量.
只计算一组输入周期的平均频率.
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