Tutorial für die Raspberry Pi und Python Community mit strukturiertem Programmcode und Projekten

Du hast eine Idee für ein Projekt?
Antworten
19wowa87
User
Beiträge: 1
Registriert: Samstag 26. Januar 2019, 17:24

Samstag 11. Mai 2019, 20:17

Hallo Leute, ich habe diesen Beitrag auch im Raspberry Pi Forum geteilt und möchte gleich bei euch los legen mit meinem ersten Anliegen.

Ich bin vom her Systemtechniker und interessiere mich für Computer sowie deren Aufbau und Funktionsweise. Mir ist bewusst Hard- und Software greifen ineinander. In meinem Beruf habe ich mit diesen solchen Themen zu tun jedoch indirekt. Als Anwender kann ich mir bisher nicht wirklich vorstellen wie diese Prozesse von Soft- und Hardware ineinander greifen und im Hintergrund ablaufen.
Besonders interessiere ich mich für Anwendungen aus der Elektrotechnik und wie ich mit meinen eigenen Programmen Aktuatorik uns Sensorik beeinflussen und Steuern kann. Um der Sache näher zu kommen muss ich lernen besser zu programmieren und mich mit der Elektronik auseinander setzen. 

Eine Programmiersprache (C++) habe ich bereits mit mäßigem Erfolg erlernen können. Meine letzte Erfahrung mit programmieren war, dass ich es nicht schaffte über einen „gewissen Punkt“ hinaus zu kommen, was mich letztendlich demotivierte und ich am ende frustriert Aufgeben musste.

Mühselig habe ich mir kleine Codeschnipsel und Tutorials aus dem Internet zusammengesucht und ein paar davon abgetippt. Mir fehlte das Gefühl, dass ich Fortschritte mache und großen Spaß bereitete es mir auch nicht meine Programme auf der Mattscheibe runter rasseln zu sehen. Aus Büchern wurde ich auch nicht schlauer, da diese in Schwarz/Weiß mich eher müde  ​​​werden ließen, weil es zu viel blabla… gab und nicht wirklich viel bewegt wurde. Eines meiner Vorwürfe war immer wieder, das ich zu schnell  aufgebe... 

Da nehme ich mir doch vor richtig los zu legen und realisiere bereits nach ein paar Tagen, dass ich mir zu viel vor genommen habe ​​​ was mich wieder sehr frustrierte, weil mein Vorhaben einfach nicht umzusetzen ist! Auch fehlte mir die nötige Grundausstattung um mit dem Programmieren (angewandt) zu beginnen! (Motoren, Sensoren, LED's, Microkontroller... usw)
Dabei bin ich doch überzeugt davon, dass ich es erlernen kann​​​!

Ich wünsche mir das Programmieren mit Begeisterung lernen zu können, mit einer Zieldefinition ("roten Faden")  und mit klar strukturierten Projekten dahinter. Damit kann man messbare Ergebnisse im jeweiligen Lernfortschritt sehen und am Ball bleiben. Einfach ausgedrückt, ich wünsche mir ich könnte etwas konkretes programmieren mit Aufgaben die ich zum Teil selber lösen oder ergänzen kann um diese anschließend mit einer Lösung vergleichen zu können! Ich wünsche mir etwas programmieren zu können dessen Ergebnis sofort sichtbar außerhalb meines Computers erscheint um damit die Auswirkungen und Funktionsweise meiner geschriebenen Programme sehen und messen kann.

Daher nehme ich mir vor für euch ein Tutorial mit Raspberry Pi 3 B+, Python 3 und PyQt5 zu erstellen. Damit motiviere ich mich jedes Mal aufs neue am Ball zu bleiben und damit hoffentlich auch für euch einen Mehrwert bieten zu können^^ 

Ich höre hier lieber auf, sonnst wird es noch ein Buch als ein Tutorial^^

Falls es einem von euch ähnlich geht/ging, könntet ihr mir helfen um gezielt daran zu gehen.
1. Was ist aktuell euer größtes Problem?
2. Was ist euer größter Wunsch in dieser Angelegenheit!
3. Was würdet ihr erreichen wollen? 
4. Habt ihr bisher euer Ziel erreichen können? 
5. Wenn nein, geht es euch ähnlich wie mir?
6. Welche Unterstützung hättet ihr gerne? Mir wären gute Lehrvideos sehr hilfreich!
7. Was ist euch wichtig daran programmieren zu können? Mir geht es hauptsächlich um beruflichen Hintergrund, ich will verstehen was ich da mache!
Ich hoffe nur es haben einige bis hierher geschafft^^ 

und ich freue mich auf eine gelungene Diskussion mit euch!
__deets__
User
Beiträge: 5797
Registriert: Mittwoch 14. Oktober 2015, 14:29

Samstag 11. Mai 2019, 23:10

Dein Ansinnen ist löblich. Allein, mir fehlt der Glaube, dass du nun plötzlich durch die Externalisierung deiner Motivation das notwendige Durchhaltevemögen aufbringst. Aus diversen Gründen:

- du hast und wirst für eine ganze Weile nicht liefern. Bis dein eigenes Tutorial Umfang, Reichweite, und Qualität erreicht hat, die ein nennenswertes (und damit für dich motivierendes) Publikum erreicht hat, bist du schon am Ziel. Das musst du also schon vorher erreicht haben. Womit eben dieser Zuspruch als Motivation kein Faktor sein kann.

- du bist bis jetzt schon frustriert wenn es nur um eine Lösung für dich geht. Das dann auch noch mit dem Anspruch, Lehrmaterial zu erstellen (und damit jenseits von ‚es geht‘ zu ‚es ist vorbildlich‘), das setzt das Ziel noch weiter/höher. Und wenn du schon vorher vorm Matterhorn kapituliert hast, dann soll’s jetzt der K2 richten?

- dein Publikum teilt dein Ansinnen nicht. Glaub mir - aus täglicher Erfahrung hier (und früher im PI Forum). Die meisten ‚Anfänger‘ sind keine solchen. Jedenfalls nicht im Sinne von ‚ich kann nicht X, und will es lernen‘. Sondern sie haben ein konkretes Problem (der Kühlschrank soll zur Walpurgisnacht extra kalt werden). Und um das zu erreichen wird einfach drauflosgedengelt, und mit Panzertape & Zahnstochern etwas zusammengerödelt. Einen Anspruch an Qualität und Erwerb von Grundlagen gibt’s da sehr selten. Das frustriert mich (und so manch anderen hier denke ich) gelegentlich, aber im Grunde ist das ja legitim. Wenn ich ein bisschen Elektronik frickele, dann will ich auch nicht erstmal Maxwells Gleichungen pauken. Sondern das runde soll ins eckige. Nur ist in dem Moment eben auch ein pädagogischer Anspruch für die Katz.

Für mich klingt es so, als ob es dir letztlich an einem Projekt mangelt, das dich wirklich motiviert. Dein Kühlschrank tut halt was er soll.

Wenn du für dich selbst keines findest (was IMHO das beste wäre), dann mag es vielleicht klappen, die Probleme anderer nicht auf die grandiose, lehrhafte und abstrakteArt zu lösen, wie sie dir vorschwebt. Sondern ggf kannst du dir aus der Vielzahl von Problemchen die andere haben welche rauspicken, und die lösen. Das also quasi zu deinem Job machen. Hier wird gerade zb gekämpft: viewtopic.php?t=45583

Vielleicht löst du eben so ein Problem, und schärfst so dein eigenes Verständnis. Bestenfalls unter Einbeziehung der Vorschläge anderer, die schon mehr Erfahrung haben.
Tholo
User
Beiträge: 160
Registriert: Sonntag 7. Januar 2018, 20:36

Sonntag 12. Mai 2019, 08:03

Und für eine "direkte" Anwendung kann ich dir nur einen Pi miteinem Sensor Packet empfehlen. Die Angebote dazu sind vielfältig aber Gründe brauchst du nur ein Pi Starter Set und ein Sensor Kit. Und schin kannst du dich freuen wenn dein Code eine LED zum blinken bringt.
Die Kosten dafür sind nicht immens und eher in Reichweite als der Umgang mit QT (meiner Meinung nach!)
Benutzeravatar
__blackjack__
User
Beiträge: 3545
Registriert: Samstag 2. Juni 2018, 10:21

Sonntag 12. Mai 2019, 16:20

Um ein sinvolles/gutes Tutorial zu Raspberry Pi 3 B+, Python 3, und PyQt5 zu verfassen, muss man sich in den Bereichen doch auch auskennen, und das ist dann alles schon auf einem eher höheren Niveau. Denn für den Raspi muss man sich mit Linux auskennen, inklusive Diensten wie systemd. Dann muss man sich mit der elektronischen Seite und den GPIOs auskennen, denn ohne das könnte man auch einfach einen anderen Rechner nehmen. Und für Qt muss man Erfahrung mit objektorientierter Programmierung und dem doch recht umfangreichen Qt-Rahmenwerk haben.

Wenn man dann auch noch Callbacks die in GPIO-Bibliotheken in eigenen Threads laufen, mit einer Qt-GUI verbinden möchte, kommt auch noch nebenläufige Programmierung und die ganzen Probleme die man sich damit einfängt, und die Eigenschaften von Qt mit Nebenläufigkeit umzugehen dazu.

Das sind alles irgendwie keine Anfängerthemen, und insbesondere glaube ich nicht, das ein Anfänger da gute Tutorials zu abliefern kann. Denn wenn er die nötige Erfahrung dazu hätte, kann er kein Anfänger mehr sein. :-)
A train station is where trains stop.
A bus station is where busses stop.
A Work Station is where …
Benutzeravatar
noisefloor
User
Beiträge: 2699
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Dienstag 14. Mai 2019, 11:36

Hallo,

exakt die gleiche Frage gibt's übrigens im deutschen Raspi-Forum: Link.

@19wowa87:

nachdem man die Grundlagen gelernt hat, ist der "nächste Level" bei Programmieren in erster Linie eins: Erfahrung. Die kommt halt nur, wenn man regelmäßig programmiert, Fehler macht, diese mit Hilfe von Foren und Blogeinträgen löst, neu programmiert und wieder von vorne anfängt.

Das ist immer so, egal ob Python, C++, JavaScript, Go, Icon, ... Klar ist die Lernkurve bei der ein oder anderen Sprache flacher als bei anderen.
GUI-Programmierung ist so mit das komplexeste, was man sich als Anfänger geben kann. Deswegen würde ich das auch _nicht_ empfehlen.

In Bezug auf Python ist es so, dass
a) man für GUI-Programmierung die Objektorientierung und Klassen von Python verstanden haben muss, sonst wird das nix. Fehler Nr. 1, auch sichtbar in vielen Threads hier im Forum, ist, dass Einteiger probieren, ein GUI mit Hilfe von Funktionen und "Spaghetti-Code" zusammenzubauen.
b) Selbst bei einer einfachen GUI für ein einfaches Programm brauchst du mindestens 5-10 Mal so viel Code für die GUI wie für die Programmlogik. Als Einsteiger sollte man aber auf die Programmlogik fokussieren, nicht auf eine schöne Ausgabe.

Bzgl. deines Tutorials: Qt ist ein mächtiges und gutes GUI-Framework - aber auch komplex. Heißt: das kann bei Tutorials ins bodenlose führen. BTW: im Qt mit Python vollumfänglich nutzen zu können, sollte man zumindest C++ so wie verstehen, dass man die Qt API Referenzdoku für C++ (Qt ist ja in C++ umgesetzt) versteht, weil in der PyQt Doku _nicht_ alles drin steht, es aber relativ einfach ist, sich aus der C++ Doku die äquivalenten Python-Klassen abzuleiten.

Gruß, noisefloor
__deets__
User
Beiträge: 5797
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dienstag 14. Mai 2019, 11:40

@noisefloor: das er das in beiden Foren postet hat er ja erwähnt. Finde ich jetzt auch nicht so wild. Das die Diskussion ohne ihn stattfindet lässt allerdings tiefer blicken ;)
Benutzeravatar
noisefloor
User
Beiträge: 2699
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Dienstag 14. Mai 2019, 11:48

Hallo,

@__deets__: nee, in dem Fall ist ein Cross-Posting in der Tat mal sinnvoll. Zumal der Meinungstenor ja quasi identisch ist.

Gruß, noisefloor
Benutzeravatar
__blackjack__
User
Beiträge: 3545
Registriert: Samstag 2. Juni 2018, 10:21

Dienstag 14. Mai 2019, 12:05

@noisefloor: 5—10 mal so viel GUI Code aber auch nur wenn man die GUI komplett per Code erstellt oder die Programmlogik sehr trivial ist. Ich denke das grösste Problem ist der mentale Umstieg vom programmieren eines linearen Programmablaufs bei den meisten nicht-GUI-Programmen, zu ereignisorientierter Programmierung und das man nichts machen darf was etwas länger läuft. Beziehungsweise wenn man das wirklich *braucht*, dann gleich noch die volle Packung nebenläufiger Programmierung dazu.

@__deets__: Der OP schrieb ja selbst: „Eines (sic!) meiner Vorwürfe war immer wieder, das ich zu schnell aufgebe...“ 😉
A train station is where trains stop.
A bus station is where busses stop.
A Work Station is where …
__deets__
User
Beiträge: 5797
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dienstag 14. Mai 2019, 13:11

Wenn er hier noch mitdiskutieren würde, könnte man ggf. eruieren warum er überhaupt glaubt, etwas lernen zu müssen, zu dem ihm offensichtlich die Motivation fehlt. Es muss ja nicht jeder programmieren. Und wenn’s der Arbeitgeber nicht verlangt, kann man ja stattdessen lernen was man will. Kompetitives Puzzeln zb.
Benutzeravatar
__blackjack__
User
Beiträge: 3545
Registriert: Samstag 2. Juni 2018, 10:21

Dienstag 14. Mai 2019, 13:53

@__deets__: Im zweiten Absatz steht doch ein bisschen etwas über die Motivation. Wobei Aufbau und Funktionsweise von Rechnern und Elektronik doch recht weit von Qt entfernt ist. Von Python vielleicht auch schon. Ein Mikrocontroller und C oder C++ sind da deutlich näher dran.
A train station is where trains stop.
A bus station is where busses stop.
A Work Station is where …
Benutzeravatar
DeaD_EyE
User
Beiträge: 318
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Sonntag 19. Mai 2019, 16:14

Vernünftige Tutorials zu erstellen, erfordert genaue Kenntnis über das, was man zeigen will.
Ich hab damals Anleitungen geschrieben, wie man Gameserver einrichtet, Schritt für Schritt.
Bin dann aber auch alle Ausnahmefälle durchgegangen. Ohne vorher ein Jahr lang intensiv damit gearbeitet zu haben,
hätte ich diese Informationen nicht gehabt.

Wenn du in die Tiefe gehst, wirst du unheimlich lange brauchen.
Das Erstellen von Bildern und das Prüfen der Richtigkeit hat bei mir am meisten Zeit gefressen und da ging es nicht ums programmieren.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten