Laufzeit hinzufügen

  • Hallo,
    Ich habe ein Problem:


    Ich soll die Laufzeit aufzeichnen wenn ein bestimmter Output aktiv ist, weiß aber nicht wie ich das programmiertechnisch hinkriege.
    Mein Code dazu sieht wie folgt aus:


    if GPIO.input(10) == True:#Pumpe 1 an
    GPIO.output(29, True)


    Wenn also Pin 29 True ist soll aufgezeichnet werden.


    Habe auch versucht mich selber schlau zu machen, habe aber leider nichts gefunden. Hoffe mir kann jemand helfen.


    MFG

  • Zuerst

    Code
    import time


    dann

    Code
    anfangsZeit = time.time()
    # nach gpio true
    
    
    endZeit= time.time()
    #nach gpio false



    Code
    #zum errechnen der Zeitdauer
    
    
    zeit= anfangsZeit - endZeit


    ist nicht die beste Lösung aber ist eine...

  • Berlin_pi: mindestens mal gibt diese Loesung die Zeit negativ aus...


    blazeitmichael: wait_for_edge bzw. add_event_callback solltest du dir anschauen. Besser noch pigpio verwenden, dort bekommst du gleich Zeitstempel (in Ticks, die man aber konvertieren kann) fuer GPIO-Ereignisse.

  • [quote='__deets__','http://test.forum-raspberrypi.de/forum/index.php?thread/&postID=225955#post225955']
    Berlin_pi: mindestens mal gibt diese Loesung die Zeit negativ aus...


    blazeitmichael: wait_for_edge bzw. add_event_callback solltest du dir anschauen. Besser noch pigpio verwenden, dort bekommst du gleich Zeitstempel (in Ticks, die man aber konvertieren kann) fuer GPIO-Ereignisse.

  • Das ist schwer zu durchblicken.


    Um da etwas Klarheit reinzubekommen empfehle ich


    - Konstanten fuer die GPIO-Nummern, statt Kommentare. Also


    Code
    PUMPE1 = 31
    PUMPE2 = 33
    GPIO.setup(PUMPE1, GPIO.OUT)


    Vor allem spaeter im Code macht es das deutlich klarer.


    - einen Alias fuer GPIO.input/output, damit die Ausdruecke nicht so elend lang werden. Zb


    Code
    in_ = GPIO.input
    out_ = GPIO.output
    ...
    if in_(TASTER) and not in_(ANDERER_TASTER)...:


    - im letzten Beispiel schon angedeutet: statt des ueberfluessigen und den Code nur verlaengernden Vergleiches auf == True/False, reicht es nur auf eingabe bzw. nicht-eingabe zu pruefen:


    Code
    if in_(TASTER):...
    if not in_(TASTER):...


    Das verkuerzt den Code auch signifikant, und erhoeht damit die Lesbarkeit.


    - es bieten sich Funktionen an, um den Code zu gestalten. ZB


    Code
    def pumpen(pumpe1, pumpe2):
            out_(PUMPE1, pumpe1)
            out_(PUMPE2, pumpe2)
    
    
    if ...:
         pumpen(True, False) #


    Und zu deinem eigentlichen Problem: ich weiss nicht, was du wo messen willst. Zeig uns bitte, was du da konkret versucht hast.

  • Na das schreit ja geradezu nach ein bisschen objektorientierung:



    Damit solltest du das jetzt einfach bauen koennen.