RasPi PICO Micropython und der MCP23017
Verfasst: Mittwoch 12. Juni 2024, 17:28
Hallo,
ich habe nun schon mehrere Tutorials ( leider alle auf Englisch ) versucht zu verstehen, wie man den MCP23017 ohne aufwendige und kompliziert zu nutzende Bibliothek verwenden kann.
Mein eigentlich einfaches Ziel ist es die Ports des Registers A dazu zu verwenden mehrere Gate-Treiber für MOSFET geschaltete Ausgänge als OUTPUT zu verwenden. Sowie über die Ports des Registers B dazu verwenden, den Schaltzustand der Ports A via LED zu visualisieren.
Ich weiß leider nicht, ob mir die Google Übersetzung hierzu alles korrekt übersetzt hat. So wie ich daraus entnehmen konnte, kann man den Schaltzustand der Port-Register ( alle zusammen ) zurrücklesen, und diesen Wert gleich wieder dazu verwenden dieses Schaltmuster ( Bit-Muster ) in den PortB zu schreiben.
Dazu möchte ich eine kleine schlanke Class schreiben, welche nur die notwendigsten Inhalte umfasst.
Alle Ports der Register A und B auf Ausgang. Einen kleinen internen Buffer, welcher die Schaltzustände des Ports A als einfache LIST mit True und False beinhaltet, damit ich den Schaltstatus wieder in das Programm zurück bekomme. Dann drei einfache Ergänzungsfunktionen,.
Einmal zum ON-Schalten, eine zum OFF Schalten einzelner Ports, und eine Funktion, welche als all_off alle Ports wieder auf Low setzt.
Wünschenwert wäre es wenn man die Übertragung mittels Try / Except OSError überwachen könnte, und im Falle einer Fehlfunktion, via eines weiteren GPIOs am PICO eine Reset auslösen könnte. Dazu habe ich den Reset-Pin am MCP23017 über einen Pullup-Widerstand (10 kOhm ) mit der Vcc verbunden.
Das ist mein bisheriger Ansatz und Grundgerüst. Leider fehlt hier noch einiges bis fast alles, aber ich komme erst einmal ohne fremde Hilfe nicht weiter.
Ich hoffe mir kann hier einer mit einigen guten Tips und Ratschlägen weiterhelfen.
Danke im Voraus
ich habe nun schon mehrere Tutorials ( leider alle auf Englisch ) versucht zu verstehen, wie man den MCP23017 ohne aufwendige und kompliziert zu nutzende Bibliothek verwenden kann.
Mein eigentlich einfaches Ziel ist es die Ports des Registers A dazu zu verwenden mehrere Gate-Treiber für MOSFET geschaltete Ausgänge als OUTPUT zu verwenden. Sowie über die Ports des Registers B dazu verwenden, den Schaltzustand der Ports A via LED zu visualisieren.
Ich weiß leider nicht, ob mir die Google Übersetzung hierzu alles korrekt übersetzt hat. So wie ich daraus entnehmen konnte, kann man den Schaltzustand der Port-Register ( alle zusammen ) zurrücklesen, und diesen Wert gleich wieder dazu verwenden dieses Schaltmuster ( Bit-Muster ) in den PortB zu schreiben.
Dazu möchte ich eine kleine schlanke Class schreiben, welche nur die notwendigsten Inhalte umfasst.
Alle Ports der Register A und B auf Ausgang. Einen kleinen internen Buffer, welcher die Schaltzustände des Ports A als einfache LIST mit True und False beinhaltet, damit ich den Schaltstatus wieder in das Programm zurück bekomme. Dann drei einfache Ergänzungsfunktionen,.
Einmal zum ON-Schalten, eine zum OFF Schalten einzelner Ports, und eine Funktion, welche als all_off alle Ports wieder auf Low setzt.
Wünschenwert wäre es wenn man die Übertragung mittels Try / Except OSError überwachen könnte, und im Falle einer Fehlfunktion, via eines weiteren GPIOs am PICO eine Reset auslösen könnte. Dazu habe ich den Reset-Pin am MCP23017 über einen Pullup-Widerstand (10 kOhm ) mit der Vcc verbunden.
Code: Alles auswählen
from machine import Pin, I2C
class MCP23017():
def __init__(self, i2c_bus, addr = 0x20, reset = None):
self.i2c = i2c_bus
self.address = addr
if reset != None:
self.reset = Pin(reset, Pin.OUT, value = 1)
self.state = [False] * 8
def setup(self):
pass
def pin_on(self, pin):
pass
def pin_off(self, pin):
pass
def all_off(self):
pass
i2c = I2C(0, sda = Pin(0), scl = Pin(1), freq = 1_200_000)
mcp = MCP23017(i2c, reset = 4)
Ich hoffe mir kann hier einer mit einigen guten Tips und Ratschlägen weiterhelfen.
Danke im Voraus