我尝试使用I2C通讯通过Raspberry-pi中的PCF8591读取来自机器的电压输入,但打印一些其他值。
也可以请我建议一下,因为如果我想获得机器输入电压,如果电压下降,它会中断功能,我应该使用哪种方法?
PCF8591-> Raspberry Pi之间的连接
将计算机连接到PCF8591
5v-> PCF8591上的AIN1
GND-> GND Rpi
import smbus
import time
address = 0x48
A0 = 0x40
A1 = 0x41
A2 = 0x42
A3 = 0x43
bus = smbus.SMBus(1)
while True:
bus.read_byte_data(address,A1)
value = bus.read_byte_data(address, A1)
print("AOUT: %1.03f" %(value*3.3/255))
time.sleep(0.2)
这样显示输出 OUT:2.756
答案 0 :(得分:0)
要获得正确的值,您必须读取该值两次。第一次读取告诉芯片进行新的测量并同时返回寄存器中的当前值(这不是正确的值)。在第二次读取时,您将获得正确的值:
import smbus
import time
address = 0x48
A0 = 0x40
A1 = 0x41
A2 = 0x42
A3 = 0x43
bus = smbus.SMBus(1)
while True:
bus.read_byte_data(address, A1) # do the measurement but ignore the value
value = bus.read_byte_data(address, A1) # get the correct value
#print(value)
print("AOUT: %1.03f" %(value*3.3/255))
time.sleep(0.2)