'''
python-periphery pcf8591 sample
HOST ---PCF8591
-----------------
Pin#3----SDA
Pin#5----SCK
---------AIN0(Analog Channel 0)---3.3V
---------AIN1(Analog Channel 1)---1.65V
---------AIN2(Analog Channel 2)---GND
GND------A0
GND------A1
GND------A2
GND------EXT
GND------AGND
3.3V-----Vref
3.3V-----VDD
GND------VSS
'''
#!/usr/bin/python
#-*- encoding: utf-8 -*-
from periphery import I2C
import time
import signal
import sys
flag = True
def handler(signal, frame):
global flag
print('handler')
flag = False
argv = sys.argv
argc = len(argv)
if (argc == 1):
device = "/dev/i2c-0"
if (argc == 2 and int(argv[1]) == 0):
device = "/dev/i2c-0"
if (argc == 2 and int(argv[1]) == 1):
device = "/dev/i2c-1"
if (argc == 2 and int(argv[1]) == 2):
device = "/dev/i2c-2"
print device
# Open i2c-0 controller
#i2c = I2C("/dev/i2c-0")
i2c = I2C(device)
signal.signal(signal.SIGINT, handler)
# Read data to PCF8591
while flag:
msgs = [I2C.Message([0x40]),
I2C.Message([0x00,0x00], read=True)]
i2c.transfer(0x48, msgs)
# print "value0=",msgs[1].data[0],msgs[1].data[1]
data = int(msgs[1].data[1])
volt0 = data * 3.3 / 255
# print "volt(Ch0)={0:.2f}".format(volt0)
msgs = [I2C.Message([0x41]),
I2C.Message([0x00,0x00], read=True)]
i2c.transfer(0x48, msgs)
# print "value1=",msgs[1].data[0],msgs[1].data[1]
data = int(msgs[1].data[1])
volt1 = data * 3.3 / 255
# print "volt(Ch1)={0:.2f}".format(volt1)
msgs = [I2C.Message([0x42]),
I2C.Message([0x00,0x00], read=True)]
i2c.transfer(0x48, msgs)
# print "value1=",msgs[1].data[0],msgs[1].data[1]
data = int(msgs[1].data[1])
volt2 = data * 3.3 / 255
# print "volt(Ch2)={0:.2f}".format(volt2)
print "volt(Ch0)={0:.2f} (Ch1)={1:.2f}
(Ch2)={2:.2f}".format(volt0,volt1,volt2)
time.sleep(2)
i2c.close() |