ich habe ein MCP23017 mit der A-Seite an ein 8er Relais angeschlossen. Die B-Seite soll später Sensordaten einlesen.
In der Vergangenheit habe ich die Outputs über eine Funktion "Schalten(Pin, Zustand)" geschaltet.
1. das Byte einlesen
2. bei Zustand == 1 --> gelesene Byte "oder" 2^Stelle
bei Zustand == 0 --> gelesene Byte - 2^Stelle
3. Byte auf MCP schreiben
Leider war die Funktion in Verbindung mit dem backgroundscheduler sehr unzuverlässig. Nach einer gewissen Zeit wurden alle GPIO auf high gestellt (Zustand --> 0x00). Ich vermute das, wenn die Methode "Schalten" von zwei Jobs gleichzeitig aufgerufen wurde, die Überlappung zu Fehlern beim schrieben führt.
Nun bin ich über die Bibliothek MCP230XX von Adafruit gestolpert.
https://github.com/adafruit/Adafruit_Py ... CP230xx.py
Da ich sie bedauerlicherweise nicht richtig zum laufen bekomme, würde ich mich über ein paar Denkanstöße freuen.
Code: Alles auswählen
import Adafruit_GPIO as GPIO
import Adafruit_GPIO.I2C as I2C
import time
mcp = MCP23017() #Objekt erstellen, Übergabeparameter wie 1 oder 0x20 für die Adresse funktionieren nicht...
for i in range (7):
mcp.setup(i,GPIO.OUT)
while True:
for i in range (7):
mcp.output(i,0)
time.sleep(0.5)
mcp.output(i,1)
Leider gehen alle LEDs ganz kurz an und bleiben dann aus.
Kann jemand den Fehler finden?
Beste Grüße