#First program with MCP23017 import wiringpi2 as wiringpi import time pin_base = 65 #lowest available starting number ic_addr = 0x10 #IC address with i2cdetect -y 1 wiringpi.wiringPiSetup() #initializes wiringpi wiringpi.mcp23s17Setup(pin_base, 0, ic_addr) #initializes this IC to these pins on this CE0 wiringpi.mcp23s17Setup(81, 1, 0x10) #initializing second SPI chip #Address function for LED One (MANUALLY ENTER PINs HERE) def adrOne() : red = 73 green = 74 blue = 75 power = 72 wiringpi.pinMode(red, 1) #Red set as output wiringpi.pinMode(green, 1) #Green set as output wiringpi.pinMode(blue, 1) #Blue set as output wiringpi.pinMode(power, 1) #Power set as output return red, green, blue, power #Writing function to prompt user input def prompt(promptStr) : x = raw_input(promptStr) return x #Function to assign certain LED to specific color
def __init__(self): self.output_pins1 = [65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80] self.output_pins2 = [81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96] self.output_pins3 = [97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112] self.output_pins4 = [113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128] self.input_pins1 = [129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144] self.input_pins2 = [145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160] self.led_pins1 = [161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176] self.led_pins2 = [177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192] self.ulazi = [] for i in range(32): self.ulazi.append(0); self.indikatori = [] for i in range(32): self.indikatori.append(0); self.svi = [] self.svi =self.svi+ self.output_pins1 self.svi =self.svi+ self.output_pins2 self.svi =self.svi+ self.output_pins3 self.svi =self.svi+ self.output_pins4 self.svi =self.svi+ self.led_pins1 self.svi =self.svi+ self.led_pins2 self.svi_motori = [] self.svi_motori = self.svi_motori + self.output_pins1 self.svi_motori = self.svi_motori + self.output_pins2 self.svi_motori = self.svi_motori + self.output_pins3 self.svi_motori = self.svi_motori + self.output_pins4 self.svi_ulazi = [] self.svi_ulazi=self.svi_ulazi + self.input_pins1 self.svi_ulazi =self.svi_ulazi + self.input_pins2 self.svi_indikatori = [] self.svi_indikatori = self.svi_indikatori + self.led_pins1 self.svi_indikatori = self.svi_indikatori + self.led_pins2 wiringpi.wiringPiSetup() wiringpi.mcp23s17Setup(65,0,0) # first pin,spi port,i2c address wiringpi.mcp23s17Setup(81,0,1) wiringpi.mcp23s17Setup(97,0,2) wiringpi.mcp23s17Setup(113,0,3) #ulazi wiringpi.mcp23s17Setup(129,1,0) wiringpi.mcp23s17Setup(145,1,1) #indikatori wiringpi.mcp23s17Setup(161,1,2) # za led na drugoj liniji wiringpi.mcp23s17Setup(177,1,3) # za led na drugoj liniji for i in self.svi_motori: wiringpi.pinMode(int(i),1) # sets pin of mcp23s17-0 to output for i in self.svi_ulazi: wiringpi.pinMode(int(i),0) for i in self.svi_indikatori: wiringpi.pinMode(int(i),0)
def enable_device(): """enable the specified device """ try: devices = cm.hardware.devices for key in devices.keys(): device = key device_slaves = devices[key] # mcp23017 if device.lower() == "mcp23017": for slave in device_slaves: params = slave wiringpi.mcp23017Setup(int(params['pinBase']), int(params['i2cAddress'], 16)) # mcp23s17 elif device.lower() == "mcp23s17": for slave in device_slaves: params = slave wiringpi.mcp23s17Setup(int(params['pinBase']), int(params['spiPort'], 16), int(params['devId'])) # TODO: Devices below need testing, these should work but # could not verify due to lack of hardware # mcp23016 elif device.lower() == "mcp23016": for slave in device_slaves: params = slave wiringpi.mcp23016Setup(int(params['pinBase']), int(params['i2cAddress'], 16)) # mcp23s08 - Needs Testing elif device.lower() == "mcp23008": for slave in device_slaves: params = slave wiringpi.mcp23008Setup(int(params['pinBase']), int(params['i2cAddress'], 16)) # mcp23s08 - Needs Testing elif device.lower() == "mcp23s08": for slave in device_slaves: params = slave wiringpi.mcp23s08Setup(int(params['pinBase']), int(params['spiPort'], 16), int(params['devId'])) # sr595 - Needs Testing elif device.lower() == "sr595": for slave in device_slaves: params = slave wiringpi.sr595Setup(int(params['pinBase']), int(params['numPins']), int(params['dataPin']), int(params['clockPin']), int(params['latchPin'])) # pcf8574 elif device.lower() == "pcf8574": for slave in device_slaves: params = slave wiringpi.pcf8574Setup(int(params['pinBase']), int(params['i2cAddress'], 16)) else: logging.error("Device defined is not supported, please check " "your devices settings: " + str(device)) except Exception as error: logging.debug("Error setting up devices, please check your devices " "settings.") logging.debug(error)
GPIO.setmode(GPIO.BCM) #Need GPIO for Hall Sensors GPIO.setwarnings(False) wiringpi.wiringPiSetup() #Hall Sensors HALL_ADDR1 = 5 GPIO.setup(HALL_ADDR1, GPIO.IN) #Making array each IC is addressed by pin_base[IC#-1] PIN_BASE = 65 pin_base = [PIN_BASE, PIN_BASE+16, PIN_BASE+32, PIN_BASE+48, PIN_BASE+64, PIN_BASE+80, PIN_BASE+96, PIN_BASE+112, PIN_BASE+128, PIN_BASE+144, PIN_BASE+160, PIN_BASE+176] #doing setup for each individual IC wiringpi.mcp23s17Setup(pin_base[0], 0, 0x10) #IC 1 (LEDs 1-4) (Pins 65-80) wiringpi.mcp23s17Setup(pin_base[1], 0, 0x11) #IC 2 (LEDs 5-8) (Pins 81-96) wiringpi.mcp23s17Setup(pin_base[2], 0, 0x12) #IC 3 (LEDs 9-12) (Pins 97-112) wiringpi.mcp23s17Setup(pin_base[3], 0, 0x13) #IC 4 (LEDs 13-16) (Pins 113-128) wiringpi.mcp23s17Setup(pin_base[4], 0, 0x14) #IC 5 (LEDs 17-20) (Pins 129-144) wiringpi.mcp23s17Setup(pin_base[5], 0, 0x15) #IC 6 (LEDs 21-24) (Pins 145-160) wiringpi.mcp23s17Setup(pin_base[6], 1, 0x10) #IC 7 (LEDs 25-28) (Pins 161-176) wiringpi.mcp23s17Setup(pin_base[7], 1, 0x11) #IC 8 (LEDs 29-32) (Pins 177-192) wiringpi.mcp23s17Setup(pin_base[8], 1, 0x12) #IC 9 (LEDs 33-36) (Pins 193-208) wiringpi.mcp23s17Setup(pin_base[9], 1, 0x13) #IC 10 (LEDs 37-40) (Pins 209-224) wiringpi.mcp23s17Setup(pin_base[10], 1, 0x14) #IC 11 (LEDs 41-44) (Pins 225-240) wiringpi.mcp23s17Setup(pin_base[11], 1, 0x15) #IC 12 (LEDs 45-48) (Pins 241-256) #------------- Address functions for LED -----------------------------------------------# def addr_1() : [power, red, green, blue] = [pin_base[0], pin_base[0]+1, pin_base[0]+2, pin_base[0]+3]