SW/ControlSW/Archive/Dirigent/1219BeforeGit/Support/unipi.py

import MCP230XX
import MCP342X

import smbus



'''
def pin(relay):
    if relay>9:
        return 0
        
    if relay<1
        return 7
        
	return 8-relay
'''
import RPi.GPIO as GPIO

class unipi:
	def __init__(self):
		self.MCPRelays=MCP230XX.MCP230XX('MCP23008', 0x20, '16bit')

		for i in range(8):
			self.MCPRelays.set_mode(i, 'output', 0x68, )

		#for ADC, not working yet
		#self.MPCADC=MCP342X.MCP342x(smbus.SMBus(1), )

		GPIO.setmode(GPIO.BCM)
		GPIO.setup(18, GPIO.OUT)
		self.p = GPIO.PWM(18, 400)

		self.relay_state=[False]*9
		#print(self.relay_state)


	def relay(self, num, value):
		pin = 8-num
		self.relay_state[num] = value
		self.MCPRelays.output(pin, value)
		
	def relay_flip(self, num):
		self.relay(num, not self.relay_state[num])
		
	def relay_is_on(self, num):
		return self.relay_state[num]
		
	def analogOut(self, level):
		dc = level*10

		#DEBUG
		#print(dc)

		self.p.ChangeDutyCycle(dc)