Requires python smbus to be installed with: sudo apt-get install python3-smbus
run with: sudo python3 demo-iowrite.py
================================================

This example uses the write_pin and writeBank methods to switch the pins
on and off on the I/O bus.

Initialise the IO class and create an instance called io.
"""

io = IO()

# We will write to the pins 9 to 16 so set port 1 to be outputs turn off
# the pins
io.set_port_direction(1, 0x00)
io.write_port(1, 0x00)

while True:

    # count to 255 and display the value on pins 9 to 16 in binary format
    for x in range(0, 255):
        time.sleep(0.05)
        io.write_port(1, x)

    # turn off all of the pins on bank 1
    io.write_port(1, 0x00)

    # now turn on all of the leds in turn by writing to one pin at a time
    io.write_pin(9, 1)
    time.sleep(0.1)
================================================

This example uses the write_pin and writeBank methods to switch the pins
on and off on the I/O bus.

Initialise the IO class and create an instance called io.
"""


i2c_helper = ABEHelpers()
bus = i2c_helper.get_smbus()
io = IO(bus)

# We will write to the pins 9 to 16 so set port 1 to be outputs turn off
# the pins
io.set_port_direction(1, 0x00)
io.write_port(1, 0x00)

while True:

    # count to 255 and display the value on pins 9 to 16 in binary format
    for x in range(0, 255):
        time.sleep(0.05)
        io.write_port(1, x)

    # turn off all of the pins on bank 1
    io.write_port(1, 0x00)

    # now turn on all of the leds in turn by writing to one pin at a time
    io.write_pin(9, 1)
    time.sleep(0.1)
# 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
# fired when the pin matches the default value
io.set_interrupt_type(0, 1)
Requires python smbus to be installed with: sudo apt-get install python3-smbus
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)))