Ablaufsteuerung in Python

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    bin neu hier und habe auch gleich ein Problem bzw. eure Hilfe nötig.

    Ich möchte mit dem Raspberry PI 2 eine kleine Ablaufsteuerung in Python programmieren.
    Das Programm soll 2 Ausgänge Steuern denen jeweils eine bzw. zwei Zeitintervalle hinterlegt sind.
    Im Anhang befindet sich ein "Ablaufdiagramm und Impulsdiagramm" zur groben Übersicht.
    Folgende Hardware ist am RPI angeschlossen:
    Taster S10 Start um den Programmablauf zu starten.
    Taster S1 Setzen um Zeitintervall 1 zu setzen.
    Taster S2 Setzen um Zeitintervall 2 zu setzen.
    Taster S3 Setzen um Zeitintervall 3 zu setzen.
    Taster S4 Setzen um Zeitintervall 4 zu setzen.
    Taster S5 um die jeweilige Zeit um 1ms zu erhöhen.
    Taster S6 um die jeweilige Zeit um 10ms zu erhöhen.
    Taster S7 um die jeweilige Zeit um 1ms zu erhöhen.
    Taster S8 um die jeweilige Zeit um 10ms zu erhöhen.
    Taster S9 um die jeweilige Zeiteingabe zu übernehmen.
    Ausgang 1 für Zeit 1 und 3.
    Ausgang 2 für Zeit 100ms.

    Der Programmablauf soll wie folgt aussehen:
    Hauptprogramm:
    Taster S10 startet den Programmablauf
    Taster S1 startet Nebenprogramm1
    Taster S1 startet Nebenprogramm2
    Taster S1 startet Nebenprogramm3
    Taster S1 startet Nebenprogramm4
    Es folgt eine Verzögerung von 1s (festhinterlegt).
    Ausgang 1 für Zeit t1 schalten (Zeit t1 wird im Nebenprogramm festgelegt Default:0ms)
    Delay Zeit t2 (Zeit t2 wird im Nebenprogramm festgelegt Default:0ms)
    Ausgang 1 für Zeit t3 schalten (Zeit t3 wird im Nebenprogramm festgelegt Default:0ms)
    Delay Zeit t4 (Zeit t4 wird im Nebenprogramm festgelegt Default:0ms)
    Ausgang 2 für 100ms schalten (festhinterlegt)
    Programmende

    Nebenprogramm1:
    Taster S5 erhöht pro Tastendruck die Zeit t1 um 1ms
    Taster S6 erhöht pro Tastendruck die Zeit t1 um 10ms
    Taster S7 verringert pro Tastendruck die Zeit t1 um 1ms
    Taster S8 verringert pro Tastendruck die Zeit t1 um 10ms
    Taster S9 bestätigt die Zeit und springt zurück in das Hauptmenü

    Nebenprogramm2, 3 und 4:
    Gleiche Taster und Zeitintervalle nur wird hier die Zeit t2, t3 und t4 in eine andere Variable geschrieben. Taster S9 bestätigt dies wieder und sorgt für den Rücksprung ins Hauptmenü.

    So dies zum groben Verständnis. Nun hier meine Fragen:
    1. Wie fange ich hier am besten an und welche Bibilotheken muss ich zuvor laden?
    2. Wie schreibe bzw. speichere ich hier die Zeitwerte in eine Variable und rufe sie wieder im Hauptprogramm auf?
    3. Was muss ich tun um die Taster zu entprellen?
    4. Kann ich die eingegebenen Zeitwerte einfach Live anzeigen lassen?
    5. Wie rufe ich ein Unterprogramm auf und lass dies abarbeiten?

    Ich könnte die Werte auch mit der Tastatur eingeben und bestätigen. Da ich aber alle nur über die Hardware steuern möchte ist dies nur über Taster realisierbar.

    Vielen Dank für eure Hilfe.

    MFG Bluepapillas

    • Offizieller Beitrag

    Beschäftige dich zu allererst mit den Basics (von Python). Und wenn du die drauf hast, machst du weiter... Dieses Projekt ist, deinen Fragen nach, zum scheitern verurteilt. Du kannst kein Spaceshuttle fliegen wenn du nicht mal den Weg zum Startplatz kennst ;). Wir reden hier von ein Haufen Interrupts, X-Funktionen die sich gegenseitig Werte Zuweisen.

    Also fang klein an. Ein Button, diesen entprellen. wie das geht steht in der Doku zum verwendeten Modul. Spiele mit Zeit rum. Lass die Zeit durch den Knopfdruck verändern, ohne globale variablen zu nehmen :fies:

  • Vielen Dank für die schnelle Rückmeldung. Ich denke wenn ich mich länger damit beschäftige werde ich es auch hinbekommen. Nur wie gesagt fällt mir der Anfang ziehmlich schwer. Wenn ich nur ein Bespiel (das ich verstehe) zu den jeweiligen Konstellationen (Aufruf Unterprogramm, Schreiben einer Variablen, Aufruf einer Variablen, Setzen und Rücksetzen eines Hardware Ein-/Ausganges) habe könnte ich mir das ableiten und zurecht schustern. Durch reines lesen komme ich leider meist nicht weiter. Wenn ich die grundlegenden Ansätze sehe komme vielleicht besser voran.

    MFG Bluepapillas

    Einmal editiert, zuletzt von Bluepapillas (8. April 2015 um 16:44)

  • Abgesehen von dert Problematik des Umgangs mit Python, welches sich beheben lässt und dann die Aufgabe theoretisch zum Kinderspiel werden lässt, muss man wissen, das Linux kein Echtzeitsystem ist. Das fällt nicht auf, wenn Du Timer im Sekunden- oder gar Minutentakt programmierst. Im ms-Bereich kann das schon kompliziert werden, da die Prozesse in Linux sich schon mal gegenseitig beeinflussen (Stichwort Multithread). Bei Echtzeitanforderungen solltest Du einen MC oder eine Kombination aus MC und Raspberry in Betracht ziehen. Wie soll die Anzeige den aussehen? Irgendwann gehen Dir die GPIOs aus, aber auch da gibt es Lösungen.
    Schau Dir erst mal ein paar Beispiele mit time und subprocess an.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!