# ================================================ # This example shows how to use the interrupt methods on the Expander Pi IO port. # The interrupts will be enabled and set so that a voltage applied to pins 1 and 16 will trigger INT A and B respectively. # using the read_interrupt_capture or read_port methods will reset the # interrupts. # Initialise the IOPi and create an instance called io. """ io = IO() # Set all pins on the IO bus to be inputs with internal pull-ups disabled. io.set_port_pullups(0, 0x00) io.set_port_pullups(1, 0x00) io.set_port_direction(0, 0xFF) io.set_port_direction(1, 0xFF) # Set the interrupt polarity to be active high and mirroring disabled, so # pins 1 to 8 trigger INT A and pins 9 to 16 trigger INT B io.set_interrupt_polarity(1) io.mirror_interrupts(0) # Set the interrupts default value to trigger when 5V is applied to pins 1 # and 16 io.set_interrupt_defaults(0, 0x01) io.set_interrupt_defaults(0, 0x80) # Set the interrupt type to be 1 for ports A and B so an interrupt is
run with: sudo python3 demo-ioread.py ================================================ This example reads the first 8 pins of on the Expander Pi Digital I/O port. The internal pull-up resistors are enabled so each pin will read as 1 unless the pin is connected to ground. Initialise the IO class and create an instance called io. """ io = IO() # We will read the inputs 1 to 16 from the I/O bus so set port 0 and port 1 to be # inputs and enable the internal pull-up resistors io.set_port_direction(0, 0xFF) io.set_port_pullups(0, 0xFF) io.set_port_direction(1, 0xFF) io.set_port_pullups(1, 0xFF) while True: # clear the console os.system('clear') # read the pins 1 to 16 and print the results print ('Pin 1: ' + str(io.read_pin(1))) print ('Pin 2: ' + str(io.read_pin(2))) print ('Pin 3: ' + str(io.read_pin(3))) print ('Pin 4: ' + str(io.read_pin(4))) print ('Pin 5: ' + str(io.read_pin(5))) print ('Pin 6: ' + str(io.read_pin(6)))
# check the value of intA to see if an interrupt has occurred if (intA != 0): callback_function() # sleep this thread for 0.5 seconds time.sleep(0.5) i2c_helper = ABEHelpers() bus = i2c_helper.get_smbus() io = IO(bus) # Set all pins on the IO bus to be inputs with internal pull-ups enabled. io.set_port_pullups(0, 0xFF) io.set_port_pullups(1, 0xFF) io.set_port_direction(0, 0xFF) io.set_port_direction(1, 0xFF) # invert the ports so pulling a pin to ground will show as 1 instead of 0 io.invert_port(0, 0xFF) io.invert_port(1, 0xFF) # Set the interrupt polarity to be active high and mirroring enabled, so # pin 1 will trigger both INT A and INT B when a pin is grounded io.set_interrupt_polarity(1) io.mirror_interrupts(1) # Set the interrupts default value to 0 io.set_interrupt_defaults(0, 0x00)
# ================================================ # This example shows how to use the interrupt methods on the Expander Pi IO port. # The interrupts will be enabled and set so that a voltage applied to pins 1 and 16 will trigger INT A and B respectively. # using the read_interrupt_capture or read_port methods will reset the # interrupts. # Initialise the IOPi and create an instance called io. """ io = IO() # Set all pins on the IO bus to be inputs with internal pull-ups disabled. io.set_port_pullups(0, 0x00) io.set_port_pullups(1, 0x00) io.set_port_direction(0, 0xFF) io.set_port_direction(1, 0xFF) # Set the interrupt polarity to be active high and mirroring disabled, so # pins 1 to 8 trigger INT A and pins 9 to 16 trigger INT B io.set_interrupt_polarity(1) io.mirror_interrupts(0) # Set the interrupts default value to trigger when 5V is applied to pins 1 # and 16 io.set_interrupt_defaults(0, 0x01) io.set_interrupt_defaults(0, 0x80) # Set the interrupt type to be 1 for ports A and B so an interrupt is