Guten Tag,
Für eine einfache Anzeigeneinheit mit einem 20x4 LCD Display bin ich auf einige Probleme gestoßen, wo ich jetzt erst einmal nicht weiter komme.
Mit diesem Display [Anzeige] habe ich so meine Nöte
Dazu habe ich wie in der Anleitung diesen I²C Adapter angelötet und verwende auch einen Levelshifter [Anzeige] für SDA und SCL. Sobald ich die gesamte Schaltung unter Spannung setze geht wie eingestellt die Hintergrundbeleuchtung an. Ebenso wenn ich einen Bus-Scan ausführe wird mir die korrekte Busadresse angezeigt.
Dazu habe ich mir dieses beiden Libraries herunter geladen und auf das Pico kopiert. Verwende ich nun statt des 20x4 ein 16x2 Display funktioniert die Anzeige auf dem Display einwandfrei. Nur bei dem 20x4 passiert rein gar nichts. Auch das Programm gibt keinerlei Fehlermeldungen aus.
Das zum ersten teil
Nun möchte ich über einen einzigen Taster zwei Schaltfunktionen umsetzen.
Zum einen habe ich eine While Schleife die sich wiederum in 5 Funktionsblöcke aufteilt.
Diese erste übergeordnet While Schleife soll bei einem längeren Tastendruck verlassen werden, und das Programm zum Ende kommen.
Jetzt bin ich auf die Funktion irq bei der Pin Nutzung gestossen. Da bedeutet doch, dass ich in der aufzurufenden Funktion nun sagen könnte, gehe zur nächsten Funktion über !?
Das heißt mit jedem Tastendruck soll die die Abfrage des aktuellen Sensors und dessen Ausgabe auf dem Display beendet werden, und zum nächsten Programmteil gesprungen oder aufgerufen werden, wo wieder eine andere Sensorgrööße abgefragt und angezeigt wird. Wie würde man sagen: "Ein ewiger Kreislauf " bis irgendwann einmal durch einen längeren Tastendruck das gesamte Programm beendet wird.
Wie bekomme ich das nun hin, dass ich mit dieser irq Funktionalität beide Aufgabenstellungen umsetzen kann ? Zwischenrein in den Abfrage-Funktionsblöcken auch immer wieder den Taster abzufragen erscheint mir hier nicht zielführend, da ich damit auch nicht die übergeordnete While Schleife stoppen kann.
Ist es hier sinnvoll Global Variablen zu verwenden, oder gibt es dafür auch noch einen anderen Lösungsansatz ? Zudem wie kann man damit, oder darüber die Zeit eines solchen Tastendrucks erfassen ?