Example #1
0
import digitalio

import sys
 
# from adafruit_mcp230xx.mcp23008 import MCP23008
 
from adafruit_mcp230xx.mcp23017 import MCP23017
 
 
# Initialize the I2C bus:
i2c = busio.I2C(board.SCL, board.SDA)
 
# Create an instance of either the MCP23008 or MCP23017 class depending on
# which chip you're using:
# mcp = MCP23008(i2c)  # MCP23008
mcp = MCP23017(i2c, address=0x27)  # MCP23017
 
# Optionally change the address of the device if you set any of the A0, A1, A2
# pins.  Specify the new address with a keyword parameter:
# mcp = MCP23017(i2c, address=0x21)  # MCP23017 w/ A0 set


def cleanAndExit():
	
	print("Resetting to default...")

	# Exit
	pinA0.value = False
	pinA1.value = False
	pinA2.value = False
	pinA3.value = False
Example #2
0
import board
import busio
from digitalio import DigitalInOut, Direction, Pull

from adafruit_mcp230xx.mcp23017 import MCP23017

from kmk.hid import HIDModes
from kmk.keys import KC
from kmk.kmk_keyboard import KMKKeyboard
from kmk.matrix import DiodeOrientation
from kmk.modules.layers import Layers

# DEBUG_ENABLE = True

i2c = busio.I2C(scl=board.SCL, sda=board.SDA, frequency=100000)
mcp = MCP23017(i2c, address=0x20)
keyboard = KMKKeyboard()
layer_ext = Layers
keyboard.modules = [layer_ext]

_______ = KC.TRNS
XXXXXXX = KC.NO

FN = KC.MO(1)

keyboard.debug_enabled = True

keyboard.col_pins = (mcp.get_pin(8), mcp.get_pin(9), mcp.get_pin(10),
                     mcp.get_pin(11), mcp.get_pin(12), mcp.get_pin(13),
                     mcp.get_pin(14), mcp.get_pin(15), mcp.get_pin(4),
                     mcp.get_pin(5), mcp.get_pin(6), mcp.get_pin(7),
import time
import board
import busio
import digitalio

from adafruit_mcp230xx.mcp23017 import MCP23017

i2c = busio.I2C(board.SCL, board.SDA)

devs = [
    MCP23017(i2c, 0x20),
    MCP23017(i2c, 0x21),
    MCP23017(i2c, 0x22),
    MCP23017(i2c, 0x23)
]
state = 'INIT'

dev = 0
pin_glob = 0


def run_tester(device, pin):
    global dev, devs, pin_glob
    devs[dev].get_pin(pin_glob).value = False
    devs[device].get_pin(pin).value = True

    print("Pin " + str(pin) + " of device " + str(device) + " is now high!")
    pin_glob = pin
    dev = device

    #     delay = delay/2.0
    #     start = time.time()
    #     print("Cycle rate is {} Hz".format(1.0/(2.0*delay)))


# while True:
#
#     time.sleep(1000)
#     GPIO.output(VOLT_OUT_PIN, GPIO.LOW)
#     sys.exit()


i2c = busio.I2C(board.SCL, board.SDA)


mcp = MCP23017(i2c)  # , address=0x20)  # MCP23017


alarm1 = mcp.get_pin(0)
alarm2 = mcp.get_pin(1)
alarm3 = mcp.get_pin(2)

alarm1.switch_to_output(value=False)
alarm2.switch_to_output(value=False)
alarm3.switch_to_output(value=False)


while True:
    # Seven Alarm modes plus off.
    alarm1.value = False
    alarm2.value = False
Example #5
0
import time
import board
import busio
import digitalio
import sys

from adafruit_mcp230xx.mcp23017 import MCP23017

i2c = busio.I2C(board.SCL, board.SDA)

devs = [MCP23017(i2c, 0x22), MCP23017(i2c, 0x23)]

# For testing:
# pins = [devs[0].get_pin(6), devs[0].get_pin(7)]

# For real:
matrix = {"a": [], "b": [], }
unknown = None
readout = []

pins = []

for dev in devs:
	for i in range(16):
		pins.append(dev.get_pin(i))

for pin in pins:
	pin.pull = digitalio.Pull.UP

while 1:
	readout = []
VERSION = "V1.0.0 (2020-07-31)"

import sys
sys.path.append('/var/www/gardenpi_control/gardenpi/utilities')
import threading
from neptune import switch_from_fish_source, get_water_source, toggle_fish_available
from adafruit_mcp230xx.mcp23017 import MCP23017
import board
import busio
from digitalio import Direction, Pull

nutrient_tank = 0

#Setup our GPIO Expanders here - need to modify this to use wiringpi (maybe?)
i2c = busio.I2C(board.SCL, board.SDA)
mcp3 = MCP23017(i2c, address=0x24)
mcp3.get_pin(nutrient_tank)
mcp3.get_pin(nutrient_tank).direction = Direction.INPUT
mcp3.get_pin(nutrient_tank).pull = Pull.UP

checked = False


def change_water_source():
    """Function to actually change our water source if we run out of water."""
    global checked
    if not checked:
        checked = True
        if (get_water_source()['job_water_source']) == 'fish_water':
            print('switching source')
            switch_from_fish_source()
Example #7
0
 def __init__(self, comm, **definitions):
     self.mcp = MCP23017(comm, definitions['address'])
     self.pin_defs = definitions['pins']
     self.initialize_pins()
Example #8
0
        adc_add.append(config[confsec].getint('a_address'))
        if not config[confsec].getboolean('Pi_pins'):
            gpio_add.append(config[confsec].getint('m_address'))

adc_add = list(set(adc_add))
gpio_add = list(set(gpio_add))

i2c = busio.I2C(board.SCL, board.SDA)

if adc_add:
    for add in adc_add:
        adc.append(ADS.ADS1015(i2c, address=add))

if gpio_add:
    for add in gpio_add:
        gpioe.append(MCP23017(i2c, address=add))


def runner(sysnum, gpioe, gpio_add, adc, adc_add, chkt, loops):
    confsec = 'CU' + str(sysnum)
    print(confsec)
    pipins = config[confsec].getboolean('Pi_pins')
    pins = [config[confsec].getint('P_LED_pins')]
    if config[confsec]['P_ind_pins'].isdigit():
        pins.append(config[confsec].getint('P_ind_pins'))
    photod = AnalogIn(
        adc[adc_add.index(config[confsec].getint('a_address'))],
        getattr(ADS, 'P' + str(config[confsec].getint('Analogin'))))

    if pipins:
        GPIO.setmode(GPIO.BCM)
Example #9
0
def main():
    # -------------------------
    # main
    # -------------------------

    global resetButton
    global LEDNrList, LEDList
    global statusLEDgreenNr, statusLEDredNr, statusLEDblueNr, statusLEDgreen, statusLEDred, statusLEDblue
    global i2c, mymcp1
    global status, justBuzzer, justReset
    global buzzerPressedTime

    # -----------------------------------------------
    # Initialize the I2C bus and the GPIO port expander
    # -----------------------------------------------
    i2c = busio.I2C(board.SCL, board.SDA)
    mymcp1 = MCP23017(i2c, address=0x20)

    # -----------------------------------------------
    # Initialize the GPIO ports
    # -----------------------------------------------
    GPIO.setmode(GPIO.BCM)
    GPIO.setwarnings(False)

    # -------------------------
    # GPIO initialisieren
    # -------------------------

    for tasti in tasterList:
        # print("GPIO setup taster", tasti)
        GPIO.setup(tasti, GPIO.IN)

    LEDList = []

    for ledi in range(8):
        LEDList.append(mymcp1.get_pin(LEDNrList[ledi]))
        LEDList[ledi].direction = digitalio.Direction.OUTPUT

    GPIO.setup(resetButton, GPIO.IN, pull_up_down=GPIO.PUD_UP)

    statusLEDred = mymcp1.get_pin(statusLEDredNr)
    statusLEDred.direction = digitalio.Direction.OUTPUT
    statusLEDgreen = mymcp1.get_pin(statusLEDgreenNr)
    statusLEDgreen.direction = digitalio.Direction.OUTPUT
    statusLEDblue = mymcp1.get_pin(statusLEDblueNr)
    statusLEDblue.direction = digitalio.Direction.OUTPUT

    # -----------------------------
    # LEDs initialisieren
    # -----------------------------
    LEDeinaus(0)
    LEDeinaus(99)
    time.sleep(1)
    LEDeinaus(0)
    statusLED("off")

    # -------------------------
    # Interrupts der anderen Taster setzen
    # -------------------------
    interruptResetVerarb(resetButton)

    # -------------------------
    # Main loop
    # -------------------------

    print("Auf gehts")
    try:
        while True:

            # status ist entweder "BuzzerPressed" oder "BuzzerWait"
            # zur Vereinfachung: Buzzerpressed = True, BuzzerWait = False

            if justBuzzer:
                # Buzzer wurde gedrückt
                interruptBuzzerVerarb(interruptPin)

            if justReset:
                interruptResetVerarb(resetButton)

            if buzzerPressedTime is not None:
                elapsed = (datetime.now() - buzzerPressedTime).total_seconds()
                if elapsed >= waitMinSeconds:
                    print("Wartezeit verstrichen - Reset")
                    buzzerPressedTime = None
                    justReset = True
                    status = False
                    interruptReset(resetButton)

            time.sleep(.2)
    except KeyboardInterrupt:
        GPIO.cleanup()
    except:
        print("unprocessed Error:", sys.exc_info()[0])
        GPIO.cleanup()

    # -------------------------
    # Cleaning at the end
    # -------------------------
    GPIO.cleanup()
Example #10
0
    parameters = pika.ConnectionParameters(
        remote_config["opena3xx.amqp.host"],
        remote_config["opena3xx.amqp.port"],
        remote_config["opena3xx.amqp.vhost"],
        credentials,
        heartbeat=60)

    connect_amqp()

    #---------------------------------------------
    # Initialize the I2C bus:
    i2c = busio.I2C(board.SCL, board.SDA)

    #---------------------------------------------
    # Initialize the MCP23017 chips
    bus_1 = MCP23017(i2c, address=0x20)
    bus_2 = MCP23017(i2c, address=0x21)

    #---------------------------------------------

    for pin in range(0, 16):
        bus_1_pins.append(bus_1.get_pin(pin))

    for pin in range(0, 16):
        bus_2_pins.append(bus_2.get_pin(pin))

    #---------------------------------------------

    # Set all the pins to input
    for pin in bus_1_pins:
        pin.direction = Direction.INPUT
Example #11
0
 def pin_setup(self):
     try:
         self.pico_33_ref = DigitalInOut(board.GP2)
         self.pico_33_ref.direction = Direction.OUTPUT
         self.pico_33_ref.value = True
     except:
         pass
     self.key_count = 108
     if self.key_matrix_enabled == True:
         self.i2c = busio.I2C(scl=board.GP1,
                              sda=board.GP0,
                              frequency=self.i2c_baud)
         self._mcp = [
             MCP23017(self.i2c, address=0x20),
             MCP23017(self.i2c, address=0x21)
         ]
         self.int_pins = [
             DigitalInOut(board.GP5),
             DigitalInOut(board.GP4),
             DigitalInOut(board.GP7),
             DigitalInOut(board.GP6)
         ]
         self.row_pins = [
             self._mcp_pin(0, 8),  #Rows 0 to 6
             self._mcp_pin(0, 9),
             self._mcp_pin(0, 10),
             self._mcp_pin(0, 11),
             self._mcp_pin(0, 12),
             self._mcp_pin(0, 13),
             self._mcp_pin(0, 14)
         ]
         self.col_pins = [
             self._mcp_pin(0, 0),  #Cols 0 to 20
             self._mcp_pin(0, 1),
             self._mcp_pin(0, 2),
             self._mcp_pin(0, 3),
             self._mcp_pin(0, 4),
             self._mcp_pin(0, 5),
             self._mcp_pin(0, 6),
             self._mcp_pin(1, 0),
             self._mcp_pin(1, 1),
             self._mcp_pin(1, 2),
             self._mcp_pin(1, 3),
             self._mcp_pin(1, 4),
             self._mcp_pin(1, 5),
             self._mcp_pin(1, 6),
             self._mcp_pin(1, 8),
             self._mcp_pin(1, 9),
             self._mcp_pin(1, 10),
             self._mcp_pin(1, 11),
             self._mcp_pin(1, 12),
             self._mcp_pin(1, 13),
             self._mcp_pin(1, 14)
         ]
         self.mcp_irq_pins = [
             self.col_pins[
                 0:
                 7],  #This maps interrupt pins in self.int_pins to mcp pins in self.rows and self.cols
             self.row_pins,
             self.col_pins[7:14],
             self.col_pins[15:]
         ]
         self.mcp_irq_pins_count = [
             0,  #This maps interrupt pins in self.int_pins to pin offset counts to get the correct column index for the keymap
             None,
             len(self.mcp_irq_pins[0]),
             len(self.mcp_irq_pins[0] + self.mcp_irq_pins[2])
         ]
         self.int_clears = [
             self.mcp(0).clear_inta,
             self.mcp(0).clear_intb,
             self.mcp(1).clear_inta,
             self.mcp(1).clear_intb
         ]
         self.gpios = [
             self._mcp_gpioa, self._mcp_gpiob, self._mcp_gpioa,
             self._mcp_gpiob
         ]
         self.int_flags = [
             self._mcp_int_flaga, self._mcp_int_flagb, self._mcp_int_flaga,
             self._mcp_int_flagb
         ]
         self.int_pins_to_mcp = [
             0,  #This maps int pins to MCP device number
             0,
             1,
             1
         ]
     if self.leds_enabled == True:
         self.led_spi = [
             self._led_spi(board.GP10, board.GP11, 1),
             self._led_spi(board.GP14, board.GP15, 13)
             # self._led_spi(board.GP10,board.GP11,4),
             # self._led_spi(board.GP14,board.GP15,110)
         ]
     if self.screen_enabled == True:
         self.screen_spi = self._screen_spi(board.GP18, board.GP19,
                                            board.GP16, board.GP17,
                                            board.GP20)
def main():
    # -------------------------
    # main
    # -------------------------

    global mymcp1, mymcp2
    global tank

    # -----------------------------------------------
    # Initialize the I2C bus and the GPIO port expander
    # -----------------------------------------------
    i2c = busio.I2C(board.SCL, board.SDA)
    mymcp1 = MCP23017(i2c, address=0x20)
    mymcp2 = MCP23017(i2c, address=0x21)

    # -----------------------------------------------
    # Initialize the GPIO ports
    # -----------------------------------------------
    GPIO.setmode(GPIO.BCM)

    # -------------------------
    # process call parameters
    # -------------------------
    opts = []
    args = []
    writeFile = 0
    displayScreen = 0

    try:
        opts, args = getopt.getopt(sys.argv[1:], shortOptions, longOptions)
    except getopt.GetoptError:
        print(datetime.datetime.now().strftime("%Y%m%d%H%M%S "),
              "ERROR: options not correct")
        usage()
        sys.exit()

    for o, a in opts:
        if o == "--help" or o == "-h":
            print("HELP")
            usage()
            sys.exit()
        elif o == "--tank" or o == "-t":
            tank = int(a)
            print("Tanknummer ", '{:.0f}'.format(tank))
        elif o == "--file" or o == "-f":
            print("output also to file ", filePosition)
            writeFile = 1
        elif o == "--screen" or o == "-s":
            print("output also to this screen")
            displayScreen = 1

    for a in args:
        print("further argument: ", a)

    # -------------------------
    # read defaults
    # -------------------------
    (literLevel1, literLevel2, literLevel3,
     literLevel4) = CaravanPiFiles.readFillLevels(tank)

    # -------------------------
    # initialize IO Pins on MCP23017
    # pin number from 0 to 15 for the GPIOA0...GPIOA7, GPIOB0...GPIOB7 pins (i.e. pin 12 is GPIOB4)
    # Füllstände: 1 an Pin GPIOB3 (11), ..., 4 an Pin GPIOB6 (14)
    # -------------------------

    fillingLevel1 = mymcp2.get_pin(11)
    fillingLevel1.direction = digitalio.Direction.INPUT

    fillingLevel2 = mymcp2.get_pin(12)
    fillingLevel2.direction = digitalio.Direction.INPUT

    fillingLevel3 = mymcp2.get_pin(13)
    fillingLevel3.direction = digitalio.Direction.INPUT

    fillingLevel4 = mymcp2.get_pin(14)
    fillingLevel4.direction = digitalio.Direction.INPUT

    # -------------------------
    # Main
    # -------------------------

    try:
        while True:
            if displayScreen == 1:
                print("Level prüfen ...")

            level1contact = fillingLevel1.value
            level2contact = fillingLevel2.value
            level3contact = fillingLevel3.value
            level4contact = fillingLevel4.value

            if displayScreen == 1:
                print("Level 1 erreicht? {0}".format(level1contact),
                      literLevel1, " Liter")
                print("Level 2 erreicht? {0}".format(level2contact),
                      literLevel2, " Liter")
                print("Level 3 erreicht? {0}".format(level3contact),
                      literLevel3, " Liter")
                print("Level 4 erreicht? {0}".format(level4contact),
                      literLevel4, " Liter")

            if level4contact:
                actLiter = literLevel4
            elif level3contact:
                actLiter = literLevel3
            elif level2contact:
                actLiter = literLevel2
            elif level1contact:
                actLiter = literLevel1
            else:
                actLiter = 0

            if displayScreen == 1:
                if actLiter < literLevel1:
                    print("Füllmenge gering")
                else:
                    print("mind. " + str(actLiter) + " Liter im Tank")

            if writeFile == 1:
                write2file(actLiter)

            time.sleep(waitAfterReadingSeconds)

    except KeyboardInterrupt:
        GPIO.cleanup()
    except:
        print("unprocessed Error:", sys.exc_info()[0])
        GPIO.cleanup()

    # -------------------------
    # Cleaning at the end
    # -------------------------
    GPIO.cleanup()
Example #13
0
import adafruit_ble_midi

# These import auto-register the message type with the MIDI machinery.
# pylint: disable=unused-import
import adafruit_midi
from adafruit_midi.control_change import ControlChange
from adafruit_midi.midi_message import MIDIUnknownEvent
from adafruit_midi.note_off import NoteOff
from adafruit_midi.note_on import NoteOn
from adafruit_midi.pitch_bend import PitchBend

#  i2c setup
i2c = busio.I2C(board.SCL, board.SDA)

#  i2c addresses for muxes
mcp1 = MCP23017(i2c, address=0x20)
mcp2 = MCP23017(i2c, address=0x21)

#  1st solenoid array, corresponds with 1st mux
noids0 = []

for pin in range(16):
    noids0.append(mcp1.get_pin(pin))
for n in noids0:
    n.direction = Direction.OUTPUT

#  2nd solenoid array, corresponds with 2nd mux
noids1 = []

for pin in range(16):
    noids1.append(mcp2.get_pin(pin))
Example #14
0
import board
import busio

from adafruit_tca9548a impprt TCA9548A
from adafruit_mcp230xx.mcp23017 import MCP23017
from digitalio import Direction, Pull
from time import sleep

# Create I2C bus
i2c = busio.I2C(board.SCL, board.SDA)

# Create the main I2C multiplexer object
tca = TCA9548A(i2c, address=0x71)

# Declare the column objects
mcp_ab = MCP23017(tca[0], address=0x20)
mcp_cd = MCP23017(tca[0], address=0x21)
# mcp_ef = MCP23017(tca[0], address=0x22)
# mcp_gh = MCP23017(tca[0], address=0x23)

# Check the pin states
while True:
	for i in range(0, 16):
		pv_ab = mcp_ab.get_pin(i)
		pv_ab.direction = Direction.INPUT
		pv_ab.pull = Pull.UP

		pv_cd = mcp_cd.get_pin(i)
		pv_cd.direction = Direction.INPUT
		pv_cd.pull = Pull.UP
Example #15
0
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)

COLORS = [GREEN, BLUE, YELLOW, RED]




led = adafruit_dotstar.DotStar(board.APA102_SCK, board.APA102_MOSI, 1)
led[0] = RED

i2c = busio.I2C(board.SCL, board.SDA)
mcp = MCP23017(i2c, address=I2C_ADDR)
KEYS = {'2': 0, '0': 1, 'P': 2, 'C': 3}

def keypress(k, duration = 0.25):
	p = mcp.get_pin(KEYS[str(k)])
	p.value = True
	time.sleep(duration)
	p.value = False


for n in range(16):
	pin = mcp.get_pin(n)
	pin.direction = Direction.OUTPUT
	pin.value = False

Example #16
0
try:
    evenum = int(sys.argv[1])
    fant = float(sys.argv[3])
except ValueError:
    sys.exit("Please type a number.")

config = configparser.ConfigParser()
config.read('../test/multiplex/eve-conf.ini')

totsys = (''.join(config.sections())).count('CU')
sysstr = 'CU' + str(evenum)

i2c = busio.I2C(board.SCL, board.SDA)
# mcp = adafruit_mcp230xx.MCP23017(i2c, address=32)
mcp = MCP23017(i2c, address=config[sysstr].getint('m_address'))

fant=abs(fant)

# setup the GPIO pins to control the devices
P_sfan_pins = config[sysstr].getint('P_sfan_pins')
P_fan_pins = config[sysstr].getint('P_fan_pins')
pin_list = [P_fan_pins, P_sfan_pins]

pins =  [None]*(max(pin_list)+1)

for i in pin_list:
    pins[i] = mcp.get_pin(i)
    pins[i].direction = digitalio.Direction.OUTPUT
    pins[i].value = False
Example #17
0
def main():
    # -------------------------
    # main
    # -------------------------

    global mymcp1, mymcp2
    global tank
    global waitAfterPumpSeconds
    global pumpOnTime
    global pinPumpeAn

    # -----------------------------------------------
    # Initialize the I2C bus and the GPIO port expander
    # -----------------------------------------------
    i2c = busio.I2C(board.SCL, board.SDA)
    mymcp1 = MCP23017(i2c, address=0x20)
    mymcp2 = MCP23017(i2c, address=0x21)

    # -----------------------------------------------
    # Initialize the GPIO ports
    # -----------------------------------------------
    GPIO.setmode(GPIO.BCM)

    # -------------------------
    # process call parameters
    # -------------------------
    opts = []
    args = []
    writeFile = 0
    displayScreen = 0

    try:
        opts, args = getopt.getopt(sys.argv[1:], shortOptions, longOptions)
    except getopt.GetoptError:
        print(datetime.datetime.now().strftime("%Y%m%d%H%M%S "),
              "ERROR: options not correct")
        usage()
        sys.exit()

    for o, a in opts:
        if o == "--help" or o == "-h":
            print("HELP")
            usage()
            sys.exit()
        elif o == "--tank" or o == "-t":
            tank = int(a)
            print("Tanknummer ", '{:.0f}'.format(tank))
        elif o == "--file" or o == "-f":
            print("output also to file ", filePosition)
            writeFile = 1
        elif o == "--screen" or o == "-s":
            print("output also to this screen")
            displayScreen = 1

    for a in args:
        print("further argument: ", a)

    # -------------------------
    # read defaults
    # -------------------------
    (literLevel1, literLevel2, literLevel3,
     literLevel4) = CaravanPiFiles.readFillLevels(tank)

    # -------------------------
    # initialize IO Pins on MCP23017
    # pin number from 0 to 15 for the GPIOA0...GPIOA7, GPIOB0...GPIOB7 pins (i.e. pin 12 is GPIOB4)
    # Füllstände: 1 an Pin GPIOB0 (8), ..., 4 an Pin GPIOB3 (11)
    # Relais an Pin GPIOB4 (12)
    # -------------------------

    fillingLevel1 = mymcp1.get_pin(8)
    fillingLevel1.direction = digitalio.Direction.INPUT

    fillingLevel2 = mymcp1.get_pin(9)
    fillingLevel2.direction = digitalio.Direction.INPUT

    fillingLevel3 = mymcp1.get_pin(10)
    fillingLevel3.direction = digitalio.Direction.INPUT

    fillingLevel4 = mymcp1.get_pin(11)
    fillingLevel4.direction = digitalio.Direction.INPUT

    levelPower = mymcp1.get_pin(12)
    levelPower.direction = digitalio.Direction.OUTPUT

    # -------------------------
    # initialisieren
    # -------------------------
    levelPower.value = False

    # -------------------------
    # Interrupt for switching on the pump
    # -------------------------
    GPIO.setup(pinPumpeAn, GPIO.IN)
    # Wenn Pumpe wieder ausschaltet, dann Interruptbehandlung
    GPIO.add_event_detect(pinPumpeAn,
                          GPIO.RISING,
                          callback=interruptPumpOn,
                          bouncetime=400)

    # -------------------------
    # set things for meassuring at startup
    # -------------------------
    actLiter = 0
    pumpOnTime = datetime.datetime.now() - datetime.timedelta(
        seconds=waitAfterPumpSeconds + 1)

    # -------------------------
    # Main loop
    # -------------------------

    try:
        while True:
            if pumpOnTime is not None:
                elapsed = (datetime.datetime.now() -
                           pumpOnTime).total_seconds()
                # print("Sekunden seit Interrupt: ", elapsed)
                if elapsed >= waitAfterPumpSeconds:
                    # print(datetime.datetime.now().strftime("%Y%m%d%H%M%S "), "Spannung anlegen")
                    levelPower.value = True
                    time.sleep(.5)
                    level1contact = not fillingLevel1.value
                    level2contact = not fillingLevel2.value
                    level3contact = not fillingLevel3.value
                    level4contact = not fillingLevel4.value
                    # print("Spannung aus")
                    levelPower.value = False
                    pumpOnTime = None

                    if displayScreen == 1:
                        print("Level 1 erreicht? {0}".format(level1contact),
                              literLevel1, " Liter")
                        print("Level 2 erreicht? {0}".format(level2contact),
                              literLevel2, " Liter")
                        print("Level 3 erreicht? {0}".format(level3contact),
                              literLevel3, " Liter")
                        print("Level 4 erreicht? {0}".format(level4contact),
                              literLevel4, " Liter")

                    if level4contact:
                        actLiter = literLevel4
                    elif level3contact:
                        actLiter = literLevel3
                    elif level2contact:
                        actLiter = literLevel2
                    elif level1contact:
                        actLiter = literLevel1
                    else:
                        actLiter = 0

                    if displayScreen == 1:
                        if actLiter < literLevel1:
                            print("Füllmenge gering")
                        else:
                            print("mind. " + str(actLiter) + " Liter im Tank")

                    if writeFile == 1:
                        write2file(actLiter)

            time.sleep(waitAfterPumpSeconds)
    except KeyboardInterrupt:
        GPIO.cleanup()
    except:
        print("unprocessed Error:", sys.exc_info()[0])
        GPIO.cleanup()

    # -------------------------
    # Cleaning at the end
    # -------------------------
    GPIO.cleanup()
Example #18
0
import time
import board
import busio
from adafruit_mcp230xx.mcp23017 import MCP23017
from digitalio import Direction, DigitalInOut

i2c = busio.I2C(board.SCL, board.SDA)

mcp = MCP23017(i2c)

# for L293D IC (motor driver)
enable_pin = mcp.get_pin(0)
enable_pin.direction = Direction.OUTPUT

coil_A_1_pin = DigitalInOut(board.D4)  #mcp.get_pin(0)
coil_A_1_pin = Direction.OUTPUT

coil_A_2_pin = mcp.get_pin(1)
coil_A_2_pin = Direction.OUTPUT

coil_B_1_pin = mcp.get_pin(2)
coil_B_1_pin = Direction.OUTPUT

coil_B_2_pin = mcp.get_pin(3)
coil_B_2_pin = Direction.OUTPUT

enable_pin.value = True


def forward(delay, steps):
    i = 0
Example #19
0
    cs_pin_num = [8, 9, 10, 11, 12, 13]

    #constructor to assign the SPI and what chip select is going to be activated
    #for the particular MCP23S17
    def __init__(self, cs_pin=None, address=0x20):
        self.cs_enable = cs_pin
        self.spi = busio.SPI(clock=board.SCK, MISO=board.MISO, MOSI=board.MOSI)
        self.mcp_spi = MCP23S17(self.spi, self.cs_enable, address)
        self.pin = []
        self.mcp = []


#creating a MCP23017 to use it as chip select for the MCP23S17
i2c = busio.I2C(board.SCL, board.SDA)
chip_ic = MCP23017(i2c, 0x27)
pin = []

#Becuase I am not using pull ups resistors for the chip select, first, initialize
# the cs as high logic voltage.
print("INIT PULL UPS SPI ")
for pin_num in range(16):
    pin.append(chip_ic.get_pin(pin_num))
    pin[pin_num].direction = Direction.OUTPUT
    pin[pin_num].pull = Pull.UP
    pin[pin_num].value = True
    print("pin {} configured... ".format(pin_num))
    time.sleep(0.2)

#create the MCP23S17 devices.
print("*" * 50)