GPIO Steuerung auf grafischer Oberfläche

  • Hallo Zusammen,


    ich will die GPIO mittels einer grafischen Oberfläche mit Buttons etc. steuern, ggf. Input-Werte anzeigen lassen.


    Meine Kenntnisse basieren allerdings eher auf C# und Arduino weniger auf dem Raspberry. Daher stellt sich die grundlegendste Frage - welche Sprache sich denn für so ein Vorhaben am besten eignet.


    Folgende sind wohl die schwierigsten Aspekte der Programmierung die das Projekt enthalten soll:

    - Messwertausgabe eines digitalen Thermometers oder sonstigen Messwertgeber

    - PWM und das in möglichst mehr als nur 256 Stufen (Lichtsteuerung da sieht man in den schwächeren Leistungsbereichen die Übergänge)


    Die grafische Oberfläche soll nachher den Status der verwendeten PINs anzeigen und auch wie schon gesagt die Messwerte. Zudem soll in der grafischen Oberfläche die Aktoren und Sensoren als Flussdiagramm darstellbar sein. Vergleichbar mit einem Wasser- oder Elektrizitätswerk.


    Wie gesagt meine erste Frage ist welche Sprache sich grundsätzlich eignet. Aktuell habe ich den Raspberry B+.


    Danke vielmals :^^:


    Grüße Sebastian

  • Hallo Sebastian,


    ich benutze Python mit pyQt und Qt5-Designer auf einem Raspberry 4, 4GB, das gibt es auch für C, habe ich gesehen, aben noch nie probiert.

    Die Ergebnisse sind gut denke ich. Beispielfoto im Anhang.


    Gruß, Holger

  • Hey danke für den Tipp :thumbup:

    Ich denke ich werde mich mal an Python versuchen. Nach meinen Recherchen ist das wohl die meist verwendete Sprache und auch leichter als C.

    Jetzt muss ich das nur noch finden uns installieren :gk1:

  • Hallo Sebastian,


    auf dem Raspberry ist Python schon installiert. Ich entwickle an der Oberfläche meist auf dem PC (ist schneller) und übertrage dann alles auf den Raspi zum Testen. Inzwischen haben sich in meiner Doku ein paar Links angesammelt, vielleicht helfen die Dir weiter.


    Raspberry:

    https://forum-raspberrypi.de/dashboard/

    https://www.raspberrypi.org/do…tion/usage/gpio/README.md

    https://haus-automatisierung.com/iobroker-tutorial-reihe/

    https://willhaley.com/blog/ras…-pi-wifi-ethernet-bridge/

    https://www.berrybase.de/


    Python

    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

    http://openbook.rheinwerk-verlag.de/python/01_001.html#u1

    https://py-tutorial-de.readthe…/python-3.3/appetite.html


    Qt5:

    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

    pyQt5:

    https://zetcode.com/gui/pyqt5/

  • Hallo,


    natürlich, weil wir hier im Internet, tue ich meine Meinung auch noch hinzu.


    Prinzipiell mache ich gerne Werbung für Python aber heute auch mal gerne für etwas Anderes:


    Ich glaube wxWIdgets oder GTK ist für Einsteiger Zugänglicher, da es NUR c/c++ ist und keine Präcompiler etc braucht. Ich hoffe, ich tue QT damit nicht unrecht??


    C bietet sich hier durchaus an. Ich verstehe nicht, warum nicht. Die Foundation bietet ein tolles Buch zur GUI Entwicklung mit C an( auf englisch ). hier

    Das ist nativ mit GTK und pures C. Dazu noch wiringPi und fertig ist die Laube.


    ODER


    C++ da kannst du z.B. wxWidgets verwenden. wiringPi dazu. In wxWidgets kannst du dann das hier verwenden. Ich habe eine komplette buildchain für den RasPi auf meinem GitHub. bei Interesse kannst du dich da ja melden.


    LG

    LG


    Mein Cross-Plattform serieller Monitor MinimalSerialMonitor als Beta auf GitHub.

  • Hallo Sebastian,


    etwas, was Deiner Idee sehr nahekommt, war Gegenstand eines der Icon-Tutorials. So um Teil 24 herum war das wohl.


    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Da geht so einiges durcheinander, ich raeume mal auf, wenn's recht ist:


    Ich weiss nicht, was du mit einem Praecompiler meinst. Es gibt einen Praeprozessor, und es gibt Compiler. Beides haben C und C++. Python keines davon.


    GUI-Entwicklung ist inhaerent objektorientiert. Und C als Sprache ist das nicht. Damit ist GTK also schon mal gegenueber Qt (ohne Py davor, das ist ein C++-Rahmenwerk) im Hintetreffen. Man hat also den GObject-Mechanismus und allerlei Drumrum erfinden muessen, um eine OO-artige Programmierung in C moeglich zu machen. Das macht den Umgang komplizierter. C++ ist OO, und auch wenn es so seine Tuecken hat, fuer GUI-Programmierung besser als C in meinen Augen.


    Beiden Sprachen gemein ist, dass man fuer sie ein Build-System braucht. Das faellt einem mit Arduino nicht auf, weil das deren grosse Leistung ist - diese Komplexitaet versteckt zu haben.


    Aber die Probleme hat man, wenn man "einfach" ein C/C++-Projekt beginnen will. Autotools, cmake, pures make + pkg-config, linker, compiler, Header-Suchpfade und Linker-Pfade, statisch und dynamisches Linken.... Muss man sich alles erst mal drauf schaffen.


    Im Gegensatz dazu ist Python einfach "speichern & los". Das gilt dann natuerlich fuer PyQt (oder tkinter).


    Fuer den Einstieg also um Laengen einfacher, wenn es zumindest um die Ergebnisgeschwindigkeit geht. Das ist eigentlich bei allen intepretierten Sprachen (JS, PHP) nicht anders.


    Eher in die Kategorie Geschmack faellt die Wahl von wxWidgets. Ich persoenlich finde das grauenhaft, die API ist wirklich altbacken, gleiches gilt fuer den Look. Das ist 90er-Jahre. Qt ist da deutlich fortgeschrittener, und auch fabelhaft dokumentiert, kommt mit seiner eigenen IDE (Creator), die einem vieles der gerade erwaehnten Komplexitaet abnehmen kann, wenn man das im Verhaeltnis zu den Alternativen etwas eingaengigere qmake benutzt.

  • @__deets__ Ich vermute mit Präcompiler war der Metaobject-Compiler bei Qt gemeint.


    fidoriel __deets__ hat das ”Problem” mit C, GUI, und OOP ja schon angesprochen. Da käme dann auch bei Gtk ein Präcompiler ins Spiel, denn ohne Not würde ich Gtk nicht in C programmieren sondern Vala verwenden. Das kompiliert zu C als Zwischenschritt, man hat dann aber eine Programmiersprache die C (und C#) sehr ähnlich ist, aber muss viele Aufgaben wie das casten von Zeigern auf ”Klassen” die höher in der Klassenhierarchie liegen, nicht fehleranfällig manuell machen. Und Speicherverwaltung wird auch einfacher.

    “If debugging is the process of removing software bugs, then programming must be the process of putting them in.” — Edsger Dijkstra

  • Gut das mit wxWidgets mag so eine Eigenheit von mir sein... Natürlich sind einige Teile sehr sehr altbacken, trotzdem ist es Basis für viele Open Source Anwendungen und wegen seiner Lizenz und mangels Alternativen auch Teil von vielen kommerziellen Projekten. Es sind halt so gut wie nur die nativen Widgets und bringt alles auf den kleinsten gemeinsamen Nenner für Cross Platform. Und besser als dieses ganze Cross Platform Java Glitch Zeugs alle mal. Vermutlich ist es aber zu viel und überfordert einen Einsteiger.

    @__blackjack__ an Vala hatte ich nicht mehr gedacht.


    Ich weiß nicht warum, aber ich habe pyQT immer als total langsam in Erinnerung. Vielleicht ist QT doch die beste Möglichkeit. Ich bin mit wxWidgets glücklich. Ich möchte nur zeigen, welche Möglichkeiten es gibt und meinen Rat anbieten. Entscheiden muss der Problemsteller selber.

    Ich dachte nur wegen der c# Erfahrung passt das mit C/GTK vielleicht.


    Sonst kommt jede Sprache in frage, für die ein wxWidgets/QT/GUI Wrapper verfügbar ist, und ein GPIO Library bietet. Python ist da die naheliegende Wahl. GTK+ ist glaube ich auch verfügbar und das ist dann nicht noch durch die "extraschicht QT".

    LG


    Mein Cross-Plattform serieller Monitor MinimalSerialMonitor als Beta auf GitHub.

  • Du hast eine falsche Vorstellung, was Qt ist. Da gibt es keine "extraschicht". Qt und GTK sind, von der Wahl der Implementierungssprache abgesehen, aequavilent. Einfach GUI-Toolkits, die beide jeweils "selbst" malen. Also unter Windows und macOS auch nicht die Systemeigenen Widgets benutzen (wie wx).


    Wenn meinst du denke ich "tkinter", kann das sein? Das ist direkt dabei, aber "extraschicht" ist es genauso viel oder wenig - denn es ist ein Wrapper um TCL/Tk. So richtig "nur" in Python ist Kivy zB.