import time import os # ================================================ # ABElectronics Expander Pi | Tester # Version 1.0 Created 08/11/2014 # Version 1.1 Updated 11/06/2017 updated to include changes to Expander Pi library # # run with: python tester.py # ================================================ # This script tests the various functionality of the Expander Pi rtc = RTC() # create a new instance of the RTC class adc = ADC() # create an instance of the ADC class io = IO() # create an instance of the IO class dac = DAC(1) # create an instance of the DAC class with a gain of 0 # set the date using ISO 8601 format - YYYY-MM-DDTHH:MM:SS rtc.set_date("2017-01-01T00:00:00") dac.set_dac_voltage(1, 1.5) # set the voltage on channel 1 to 1.5V dac.set_dac_voltage(2, 1.0) # set the voltage on channel 2 to 1.0V # set the reference voltage. this should be set to the exact voltage # measured on the Expander Pi Vref pin. adc.set_adc_refvoltage(4.096) while True: # clear the console os.system('clear')
================================================ ABElectronics Expander Pi | Digital I/O Interrupts Demo Version 1.0 Created 21/08/2014 Version 1.1 Updated 11/06/2017 updated to include changes to Expander Pi library 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)
intA = io.read_interrupt_status(0) # reset the interrupts io.reset_interrupts() # 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)