Beispiel #1
0
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)