我正在使用 TSL235(http://www.ti.com/lit/ds/symlink/tsl235.pdf http://www.ti.com/lit/ds/symlink/tsl235.pdf)光频转换器和 Raspberry Pi。传感器的输出是方波(50% 占空比),其频率与光强度成正比。
所以我需要知道(在 python 脚本中)哪个频率到达 Raspberry Pi 的输入 GPIO 引脚。
我只找到了一个教程(http://playground.arduino.cc/Main/TSL235R 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
我想我必须对一个时间间隔内的信号进行计数。但如何呢?
Use the time模块。它具有对 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)