Beiträge von WillyR_aus_C

    Guten Tag,

    ich habe mir ein Waveshare Touch Display gegönnt. Das konnte ich soweit auch mit der Anleitung zur Funktion bringen.
    Nun möchte ich noch zusätzlich einen VNC Zugriff einrichten.
    Die Einträge in der "/boot/confg.txt" habe ich so gemacht, wie in der Anleitung beschrieben. Es funktioniert alles.
    Wenn ich nun VNC aktiviere, und mich auf das Raspbery Pi 3B einwähle, erhalte ich vom Windowsrechner aus die Meldung "Desktop kann nicht angezeigt werden" in stark verpixelter, weißer Schrift auf schwarzen Hintergrund. Auf dem Touch-Display selber erscheint die Information einer neuen Benutzeranmeldung und das VNC Symbol in der Menüleiste ist nun schwarz unterlegt.
    Hat jemand eine Ahnung, wo und welche Einstellungen ich machen muss, damit ich via VNC parallel auf das PI zugreifen kann, und dabei auch ein 4:3 Bild bekomme ?
    Danke im Voraus

    Guten Tag,

    Da nimmst du ein NoIR Kameramodul, wobei jetzt noch unklar ist, wie die Auslösung erfolgen soll.
    Dann kannst du via GPIO und einer kurzen Vorlaufzeit die Kamera starten, oder öffnen, die IR-LEDs einschalten das Bild schießen oder aufnehmen. Anschleeßend musst du nur noch die LEDs via GPIO gesteuert ausschalten und die Kamera schließen.
    Nur solltest du dir dabei bewusst werden, IR ist sehr breitbandig, was die Wellenlängen angeht. Nicht mit jeder IR Wellenlänge wiederum abhängig von der Entfernung zum Alarm auslösenden Objekt erreichst du ein ausreichende Ausleuchtung.
    Da auch der Grund der Auslösung unbekannt ist, auch einige Tiere können IR wahrnehmen und können möglicher Weise wieder verschreckt werden, und die Flucht antreten, bevor die Aufnahme ausgelöst wurde.
    Sehr viele Unbekannte, aber innerhalb der Bibliothek GPIOZERO findet man Beispiele für eine Kopplung PIR, IR Scheinwerfer, und Kameraauslösung.

    Guten Tag

    Was ist eigentlich aus deinem riesen Projekt geworden. Ampeln schalten und so oder war das nur Vorwand?

    Was sind das für lächerliche Unterstellungen. Das ist schon längst in Sack und Tüten.
    Zumal ich auch den Zwischenbericht gegeben hatte, in dem ich sage es würde schon zum damaligen Zeitpunkt mit einer Ampeleinheit funktionieren. Keine Ahnung wie du darauf kommst, hier solche Unterstellungen von dir zu geben !
    Ich verstehe auch nicht was das mit

    Man kann auch auf die Kacke hauen.

    zu tun hat. Jeder darf doch so mein Verständnis hier seine Meinung frei äußern. Oder muss ich in Zukunft bei dir anfragen, ob ich eine Frage stellen darf, oder eine Antwort geben darf.
    Halte dich bitte mit solchen unverschämten Äußerungen in Zukunft etwas zurück.

    Guten Morgen,

    ich kann selber keine Lösung anbieten. Jedoch möchte ich auf diese Zeile aus dem ersten Betrag aufmerksam machen.

    Bisher haben wir die ATTINY mit der Software „burn-o-mat“ und einen DIAMAX AVR Brenner über eine Raspberry 3B auf diese AVR übertragen, was auch problemlos funktioniert.

    Ich verstehe jetzt die Diskussion um ein zusätzliches RasPi , hier ein Zero oder 2B nicht.
    Ich nehme an, so wie es auch von Bernd666 verstanden wurde der TO AndrePi damit meint, er möchte eine separates möglicher Weise FAT32 Laufwerk nutzen, um die HEX Programmfiles für egal welche Variante bereitzustellen, ohne das er von außen auf die SD-Karte des RasPI durch umstecken der Karte in einen USB-Kartenleser an einem Windows PC, oder Apple Computer und damit auf die Betriebssystempartitionen zugreifen muss. Ausgehend von dem OTG USB-HUB einem USB Cardreader und dem angeschlossenen DIAMAX AVR Brenner würde ein Tausch der SD-Karte ( Programmfiles ) über den zusätzlich angeschlossenen SD-Kartenleser zu einem sofortigen Reboot am PI Zero führen.
    Das funktioniert also nicht, so wie es sich hier einige etwas leichtgläubig vorstellen.
    Vielleicht sollten sich die anderen Mitglieder die hier bezüglich des Handlings mit AVR Brennern mehr Erfahrungen haben darauf konzentrieren, eine klare Aussage zu machen.
    Hier muss man nicht um den heißen Brei herum reden, sondern einfach nur sagen, und die Frage des TO beantworten: -> "Es geht !" oder "Es geht nicht !". Damit kann man sich die ganze Diskussion ersparen, und auf eine Reaktion des TO dazu warten.

    Guten Morgen,

    mit der Adressierbarkeit kannst du wie jar schon aufzeigte, und diesen MCP23X17 in der 2er Paarung 16 * 16 = 256 Tasten abfragen, oder dann in der maximalen Auslegung über diese A0-A2 Address-Pins 4 * ( 16 * 16 ) = 1024 Taster abfragen. Ob du dich dabei für die langsamere I²C Variante oder die bedeutend schnellere SPI Variante entscheidest, hängt damit sowohl von der Beschaffungslage wie auch der gewünschten Abfragerate ab.
    Ich verstehe zudem nicht, warum man die Aufgabenstellung die durch den TO nun relativ präzise genannte wurden anfängt in Frage zu stellen. Man kann doch nicht nur weil der Hintergrund ein Game genannt wurde einfach sagen, lass einfach paar Tasten weg. Wenn die Aufgabenstellung ohne den

    Gaming Hintergrund genannt worden wäre, ich möchte 860 oder 592 Tasten abfragen, kann man doch nicht einfache sagen, lasse 256 Tasten weg, die brauchst du nicht wirklich.
    Vielleicht sollten sich hier einige Forenmitglieder einfach mal etwas mehr darüber Gedanken machen, welche Auswirkungen solche Aussagen für das Ansehen des Forums haben. Viele Mitglieder werden hier offensichtlich, auch mit Absicht, durch solche bevormundenden Aussagen verschreckt.

    Guten Tag,

    man munkelt was von 10k-50k Eingangswiderstand

    bist du nicht etwas gehässig ? :lol:
    Warum sagst du ihm nicht einfach, warum es eine ganz blöde Frage ist :bravo2:

    dass ich nicht wirklich weiß, wie hoch der Widerstand des Raspberry Pis zusammen mit dem ADC ist.

    Das ist so etwas von Banane. Die meisten ADC sind alle sehr sehr hochohmig ausgelegt, um möglichst kleine Spannungen bei geringsten Meßströmen überhaupt erfassen zu können.
    Damit gehört der Spannungsteiler zwischen deinem Gleichrichter mit Glättungskondensator, und dem ADC ! Wie man einen Spannungsteiler berechnet wurde bereits im Beitrag #24 aufgezeigt.

    Guten Tag,

    Ich hätte nicht so einfach einen Lüfter welcher auch einen Anlaufstrom hat, ohne einen entsprechenden Treiber direkt zwischen den Pins 1 oder 17 und irgendeinem Ground-Pin verbunden.
    Wie hier schon mehrfach gesagt wurde, liegt die gesamte Belastung aller GPIO-PIns inkl. der Vout Pins für 3,3 Volt nur maximal 200 mA. Wäre es nicht gescheiter gewesen, einen freien GPIO als PWM -Ausgang zu nutzen - damit einen Transistor anzusteuern welcher die Drehzahl des Lüfters der dann immer noch über die Output-Spannung 5,0 Volt versorgt wird, zu steuern ?
    Wenn nun keiner der GPIOs die als Ausgang programmiert werden können, dazu in der Lage sind, ein einfache LED mit einem passenden Vorwiderstand zum leuchten zu bringen, dann warst du Grill-Master :blush:
    Schade um das schöne RasPi

    Guten Tag,

    ich habe mir nun auch ein kleines Pico zugelegt und schon das erste fast brauchbare Programm dafür geschrieben.
    Meine erste Frage wäre:

    - Wie kann man den STRING speziell in der Zeile für die Luftfeuchtigkeit so formatieren, damit auch das "%" Zeichen mit angezeigt wird ?

    Ich nachfolgenden Schritt würde ich gern noch eine Funktion via eines angeschlossenen Tasters ergänzen, damit mir auf dem Display nicht nur die aktuellen Werte angezeigt werden, sondern auch zwei Graphen angezeigt werden, wie der Temperaturverlauf und der Verlauf der Luftfeuchtigkeit der letzten 24 Stunden angezeigt wird. Um auf den Display mit einer Breite von 128 Pixeln einen vollständigen Tagesgraphen darzustellen, müßte ich somit wenn meine Berechnungen stimmen aller 11 1/4 Minuten eine Messung durchführen.

    Dazu meine zweite Frage:

    - Wie kann man am geschicktesten 2 x 128 Meßwerte zwischenspeichern ?

    Hierzu dann auch die nächste Frage:

    - Wie bewerkstelligt man es, damit diese Speicherliste immer die Größe von maximal 128 Meßwerten beibehält ? Somit am zweiten Tag oder nach 24 Stunden nicht mehr Meßwerte beinhaltet als dargestellt werden können.

    Im Weiteren:

    - Wie setzt man eine Tasterabfrage so um, dass diese erst dann zu einem Unterprogramm- / Funktionsaufruf führt, wenn auch schon genügend Meßwerteinträge vorhanden sind ?

    - Wie kann man erreichen, dass die grafische Darstellung nur für eine gewisse Zeit z.B. 30 Sekunden Bestand hat, und dann wieder auf die ursprüngliche Anzeige mit den zuletzt gemessenen Werte zurückgeschaltet wird ?
    Und als letzte Frage:

    - Wie skaliert man die gespeicherten Meßwerte für die grafische Meßwertdarstellung so, dass diese für die Displayhöhe passend sind ?

    Die beiden Library habe ich mir aus dem Internet besorgt. Das Grundprogramm noch ohne Wertformatierung funktioniert auch schon soweit.

    Guten Tag,

    früher hat man gesagt "Eine Runde Mitleid, ohhh" !
    Wenn Gnom sich über andere erhebt, dann scheint es offensichtlich sein alleiniges Recht zu sein !? Wenn er für seine fachlich wie sachlichen falschen Kommentare gemaßregelt wird, weil er wirklich nur technischen Unsinn erzählt, dann fühlt er sich gekränkt.
    Aber wie sagt ein altes Sprichwort: "Betroffene Hunde bellen!"

    Guten Tag,

    Der Gleichrichter, sofern er keine Glättungsschaltung dahinter hat, liefert immer noch Sinuswellen - zwar keine negativen Spannungen mehr,

    Dazu muss man eigentlich keine Antwort geben. Es wird niemals eine Sinuswelle sein.
    Entweder es sind nur die positiven Spitzen / Halbwellen mit einer Unterbrechungsphase, bei einer Einwegegleichrichtung, oder eine permanente Abfolge von positiven Halbwellen bei einer Brücken- , oder 4-Wegegleichrichtung. Wenn aber schon bei dem Begriff Halbwelle scheitert, muss man sich nicht so wie du aus dem Fenster lehnen. -> https://www.elektronik-kompendium.de/sites/slt/0201071.htm
    Das nur als kleine fachliche Anmerkung zu deinen Kommentaren.

    Guten Tag,

    Wenn hier jemand seitenlang spekuliert, dann bist du das! Du nervst, merkst du das nicht?

    Diese Aussage trifft wohl eher auf dich zu !
    Dazu muss man nur deine ganzen Beiträge aus den Anfangsmonaten des Jahres 2022.
    Aber um auf das Thema von Gunter1337 zu kommen, dass grundsätzliche Wissen, oder die Hinweise wie man ein Wechselspannung alternativ eine gepulste Gleichspannung glättet, wird hier erklärt. Darin ist zu lesen, daß die noch verbleibende Brummspannung von einigen Faktoren abhängig ist. Diese werden uns allerdings durch den TO nicht genannt.
    Bemüht man die Forensuche zu diesem Thema welches der TO auch anspricht, findet man beim hineinlesen in diese Themen sehr viele Antworten, die sich grob in wenige Einzelkategorien aufteilen lassen:
    - Welche Anforderung habe ich an das Meßergebnis bezüglich seiner Genauigkeit, sowie der Anzahl der Messungen je Zeiteinheit,

    - Welche Signalgüte hat mein Eingangssignal,

    - Wie stabil ist Spannungsversorgung des ADC's selber,

    - Welche Einflüße streuen über die Leitung von der Signal- oder Spannungsquelle bis zum ADC Eingang selber ein.

    Daraus ergibt sich wie folgerichtig erwähnt wurde, welche Signalaufbereitung zwischen der Spannungsquelle und dem ADC Meßeingang erfolgen muss.

    Der einzige der hier rumquacksalbert bist du, weil du mit anderen weiterführenden Antworten die für meine Begriffe sogar über die Fragestellung hinaus gehen, und weitere Punkte zur Fehlerminimierung aufzeigen, nicht klar kommst.
    Wenn sich hier jemand die Mühe machen möchte eine solch umfangreiche Antwort zu geben, dann lass ihn doch sein Ding machen. Er hat nichts falsches gesagt !Die Grundaussagen, wie auch Nachfragen sind schlüssig.

    Gesundes Neues

    Guten Tag,

    eigentlich sollte das mit Pillow kein Problem sein.
    Allerdings dürfte bei voller Auflösung der Sekundentakt ein Problem werden, zumal wie ich weiterführend gelesen habe daß du dieses Überlagerungsbild auch noch irgendwo abspeichern möchtest.
    Bei Buster müsste noch die Bibliothek PiCamera funktionieren. Damit kann man das Kamera-Image direkt in ein Pillow Image übertragen und weiter verarbeiten.

    Guten Abend,

    och der PCF arbeitet doch mit 3,3V, Taster ran ud fertig VCC an Pico 3.3V GND an GND SCL und SDA an SCL und SDA Taster an Port und nach GND

    Da der PCF eine Konstanstromquelle 100µA enthält ist offen immer high =1 und Taster nach GND gedrückt = low ==0

    Wenn der PCF natürlich noch 5V schalten soll dann muss man weiter denken, entweder Pegelwandler nachschalten oder vorschalten.

    Danke für deine schnell Rückmeldung.
    Wie der TO schrieb, werden die PCF8574 mit 5 V aus einer ext Quelle über Pegelwandler / Levelshifter betrieben. Damit müsste das INT Signal aus PIN13 auf 3,3V gewandelt werden. Nun weiß ich leider nicht welche ART Levelshifter er verwendet, und ob dort noch ein Port für das INT Signal frei wäre. Reicht hier ein einfacher Vorwiderstand, oder braucht man einen Spannungsteiler, oder doch den Levelshifter dafür ? Eigentlich hätte ich jetzt eher gedacht, dass der TO diesen wichtigen Punkt selber anspricht.

    Guten Abend,

    Ist das das Interrupt Programm pcf_taster(pin)?

    Das ist kein Programm sondern nur eine Funktion, die über die Definition:

    Python
    inter.irq(trigger = Pin.IRQ_FALLING, handler = pcf_taster)

    aufgerufen wird. Das heißt, wenn der Signalpegel an dem GPIO ( GP2) abfällt, mit dem der PIN13 des PCF8574 verbunden ist, also von HIGH auf LOW wechselt, wird ein Interrupt ( Unterbrechung ) ausgelöst und zu der Funktion gesprungen die mit handler = definiert ist.
    Von solchen GPIO-Eingangssignal abhängigen Interrrupt-Funktionen kannst du in deinem Programm bis zu 10 mal definieren, ohne das du mit einer

    Python
    while True:
        if gpio.value == 1:
            <Ausführungscode>

    permanent die CPU beschäftigen musst, diesen Port fortlaufend abzufragen.

    Es wird damit auf beiden Adressen der Bus gescant. Warum eigentlich wenn die Adressen bekannt sind?

    Das war nur ein Beispiel Programm, deswegen auch nicht zu 100% perfekt. Normal, es ist nun wieder deine Entscheidung kann es ja mal vorkommen, dass ein solcher Chip ausfällt, oder die Verdrahtung nicht mehr ganz okay ist. Wenn es sich um eine mobile Anwendung handelt, die regelmäßig immer mal wieder neu gestartet wird, aber einige Funktionen durch den Ausfall eines dieser Bus-Komponenten nicht vollständig beeinträchtigt ist, könnte man hier noch eine Ausnahmebehandlung anfügen, um zumindest die Funktionen / Programmlauf im Rahmen der noch zur Verfügung stehenden Bus-Slaves sicherzustellen, ohne dass das gesamte Programm mit einer nicht angezeigten Fehlermeldung aussteigt. Würde man z.B. als erstes das Display initiieren, könnte man auf dem Display auch ausgeben, dass zum aktuellen Zeitpunkt der PCF8574 mit dieser oder jener Funktion nicht erreichbar ist, aber der Rest deswegen trotzdem noch funktioniert.
    Wie man eine solche Ausnahmebehandlung mit FLAGs sowie try: | except: richtig programmiert, und welche Rahmenbedingungen dafür einzuhalten sind, hängt in erster Linie davon ab, was das Programm alles machen soll. Aber dazu findest du hier bestimmt über die Forensuche in der Kategorie "Python" ausreichend Beispiel, bzw eröffnest einen neuen Thread dazu. Hier würde es jetzt zu weit führen, und das Ausgangsthema sprengen.

    Pin 13 (Int) habe ich nach aussen geführt und keine Verbindung zum Pico.

    Hier musst du nur aufpassen, dass die Spannung an diesem PIN auch der maximal zulässigen Eingangsspannung eines PICO GPIO entspricht. Ich würde dich mangels umfassender Kenntnis hier an jar verweisen, der dir ggf genauer erklären könnte wie man aus den 5 Volt des PIN13 die benötigten 3,3 Volt macht. Ob hierfür ein einfacher Widerstand zureicht, ein Spannungsteiler oder sogar eine Levelshifter notwendig ist hängt von der Stromstärke ab auf die ein GPIO PIN am PICO mit High reagiert. Keinesfalls darfst du diese 5 Volt am Ausgang des PIN13 direkt auf den Interrupt auslösenden GPIO des PICO schalten !

    Was meinst du mit genau:

    " Alles was nach der letzten Zeile kommt wieder weiterhin ausgeführt, und nur dann unterbrochen wenn wieder eine Rückmeldung über den INT Kanal kommt. Ist diese Funktion "pcf_taster" durchlaufen, macht das eigentliche Programm an der Stelle weiter wo es durch den Interrupt unterbrochen wurde."

    Irgendwo muss ja auch dein Programmteil kommen, der dein Display mit Daten füttert.
    Also kann man auch ein eine klassischen Statemachine mit einer while-Schleife verzichten, wenn du zum Beispiel eine Sensorabfrage mit der Displaydarstellung auch über eine solche Funktion machst, die dann nur periodisch über einen Timer-Interrupt aufgerufen wird.
    Damit reduziert man beträchtlich die CPU-Last, und damit auch den Gesamtstromverbrauch, wenn die CPU nur aktiv wird, wenn entweder ein externer Interrupt ( über einen GPIO ) oder über einen Timer ( Zeitgesteuert ) ausgelöst wird. So kann man periodische Sensor Abfragen, oder Display-Aktualisierungen sehr Ressourcenschonend umsetzen. Dazu muss man nicht Programmschleifen andauernd durchlaufen, oder die Programmausführungsgeschwindigkeit mit sleep ausbremsen. Beachten musst du dabei jedoch, dass du mit jeder Interrupt-Quelle dir ein enges Zeitraster auferlegst. Dieses äußert sich in der Tatsache, dass auch eine solche Interrupt-Funktion von einem anderen Interrupt unterbrochen werden kann. Also solltest du möglichst keine aufwendigen und rechenintensiven Sachen innerhalb seiner solchen Funktion ausführen, sonst müsstest du weiterführend auf Interrupt-Sperren zurückgreifen. Hier aber auch gleich wieder und damit auf deine Anwendung zurückzukommen, den PCF8574: Du bzw. die CPU hat nur 20ms Zeit auf das Signal von PIN 13 ( INT ) des PCF8574 mit einer weiterführenden Abfrage zu reagieren, sonst könnte sich der Zustand an den abzufragenden Ports schon wieder geändert haben. Deswegen Interruptsperren sind z.T. notwendig und unabdingbar. Aber diese müssen wohl Bedacht eingesetzt werden, und man darf keinesfalls Vergessen dieser wieder aufzuheben.

    Und noch ein paar Worte zu deiner Programmerstellmethode und diesen Portexpandern allgemein:

    Teile am besten deine Programmfunktionen in einzelne Blöcke auf. Der Teil fragt die Taster ab, der nächste Teil steuert die restlichen LEDs am zweiten PCF8574, und wiederum der nächste Teil kümmert sich um die Displayaktualisierung. Nun musst du entscheiden, was wird durch den Benutzer von Außen eingebracht, dann sind es GPIO Interrupte, und was sollte oder kann nach einem festen Zeitschema passieren. Damit hättest du drei Funktionen die mit def beginnen und sich ausschließlich um einen einzigen Anwendungsfall kümmern. Dann musst du nur noch die Interrupte initiieren, entweder über einen GPIO, oder einen Timer.
    Da alle Portexpander über einen oder mehrere dieser INT Pins verfügen, muss man damit nicht ständig den I²C Bus durch permanente Abfragen blockieren, sondern reagiert erst in dem Fall auf ein solches Ereignis, wenn es notwendig wird. Bei dieser Art von Display ( LCD Textdisplays, einzeilig oder mehrzeilig ) sind die zu übertragenden Datenmengen noch gering. Hast du allerdings TFT- oder OLED-Displays kommst du irgendwann an die Grenzen des Datenbusses, wenn du zudem noch permanent mit deiner Methode Statemachine parallel versucht irgendwelche Ports abzufragen.
    Also um das mal vereinfacht zu sagen, die Datenblätter lesen, und die zur Verfügung stehenden Möglichkeiten der Hardware auch zum eigenen Vorteil ausnutzen.

    Belese dich, und übe erst einmal Programme so zu schreiben, dass du die CPU Belastung / Auslastung so gering wie möglich hältst, dann kommt die externe Hardware hinzu, und dann beginne die Möglichkeiten der angeschlossenen Hardware für dich und deine Zwecke optimal auszunutzen. Dazu bietet die Programmiersprache µPython fast alle Möglichkeiten, bis hin zu Stromsparmechanismen, um den Strombedarf der durch die CPU verursacht wird weiter zu senken. Aber das würde jetzt viel zu weit führen hier noch weiter in die Details zu gehen.

    EDIT: Aus dem #9 fehlerhaft angegeben Beispiel Codes - die übernommen Fehler entfernt.

    Guten Tag,

    ich hatte es schon in meinem #9 erwähnt.

    Denn ohne diese Nutzung von PIN13 darf diese PIN Abfrage Routine hier diese WHILE Endlosschleife keine Verweilzeit in Form eines Sleep enthalten.

    Du verfolgst mit den utime.sleep() den vollkommen falschen Software Lösungsansatz. Denn nach jedem dieser Programmsegment macht das Programm ein Pause von 1 Sekunde, und dann den Zeitpunkt zu treffen, wann gerade wieder die Abfrage kommt, und dabei gleichzeitig den Taster gedrückt zu haben ist eher unwahrscheinlich.

    Das Programm wartet auf ein LOW getriggertes Signal aus PIN13 des PCF2 an GPIO2.
    Wenn durch einen erkannten Tastendruck das Signal INT auf LOW fällt springt das Programm in die Interrupt-Routine pcf_taster. Hier erfolgt jetzt die Abfrage der einzelnen PORTs am PCF8574, sowie einer Wertzwischenspeicherung in der LIST LED. Anschließend werden die LEDs ( Bauelemente ) entsprechend der Portzuweisung 4+x auf den entsprechenden Logikpegel geschaltet. Diese sleep_ms(20) soll das mechanische Taster-Prellen unterdrücken.

    Alles was nach der letzten Zeile kommt wieder weiterhin ausgeführt, und nur dann unterbrochen wenn wieder eine Rückmeldung über den INT Kanal kommt. Ist diese Funktion pcf_taster durchlaufen, macht das eigentliche Programm an der Stelle weiter wo es durch den Interrupt unterbrochen wurde.

    Guten Tag,

    ich habe absolut keine Ahnung was du mit dieser Aussage bezweckst.

    Dein Code falls er in der Formatierung richtig geschrieben ist, nicht mit dem noch einmal zusätzlich eingerückten else dann schaltet die LED mal kurz für den Moment wo eine Tasterbetätigung festgestellt wird auf ON, und geht sofort wieder aus, wenn der Taster losgelassen wird. Aber auch nur dann, wenn der Pegel am Eingang von LOW auf HIGH geht.
    Zur Formatierung im Python Code. Eine ELSE hat immer die gleiche Einrückung wie das zugeordnete IF.

    Hier noch einmal die Erläuterung zu den Registerabfragen:

    Wenn du Taster an einen Eingang des PCF8574 anschließt gibt es zwei Möglichkeiten
    1) Mit einem Pullup wird der Pegel bei geöffneten Taster auf HIGH gehalten. Damit ist die Abfrage im ungeschalteten Zustand des Tasters der mit GND verbunden ist, immer HIGH oder 1 solange keine Tasterbetätigung stattfindet.
    2) Mit einem Pulldown wird der Pegel bei geöffnten Taster auf LOW gehalten. Damit ist die Abfrage des Statusregisters im ungeschalteten Zustand immer 0 , und wechselt auf HIGH bzw. 1 wenn der Taster dann mit der Vc- Pin des PCF8574 verbunden ist.
    Jedoch regiert der PIN13 INT nur wenn der Pegel an einem Eingang auf HIGH wechselt.
    Daher auch die Frage, was soll bei Tasterbetätigung passieren ? Soll die LED nur solange leuchten, wie der Taster gedrückt wird, oder soll die dazugehörige LED angehen, und an bleiben bis zur erneuten Tasterbetätigung ? Dann musst du noch beachten, dass Taster prellen.

    Jetzt musst du auf deine Spannungsversorgung achten.

    Da du keine Angaben gemacht hast wie der PCF8574 über den PIN16 versorgt wird, kann ich hier nur raten. Daher spielen die Größen der Widerstände sowohl Vorwiderstände der LEDs wie auch der Pullup Widerstände ein gewisse Rolle. Denn der Gesamtstrom der durch den PCF8574 fließt darf keinesfalls 80mA überschreiten. Jetzt kommt aber auch noch das Problem hinzu, weil du keinen Schaltplan veröffentlicht hast, woher bekommt der PCF seine Versorgungsspannung ? Ich hoffe nicht das alle drei PCF8574 am GPIO - Pin 36 = Vout 3,3 V des PICO hängen.

    Daher mal bitte den aktuellen Schaltplan beifügen. Auch welche Komponente woher mit welcher Spannung versorgt werden, und dein bisheriger, vollständiger Programmcode.