Laufzeit hinzufügen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • 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...

    Einmal editiert, zuletzt von Berlin_pi (10. Juni 2016 um 15:00)

  • 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.ph…5955#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.

    Einmal editiert, zuletzt von blazeitmichael (12. Juni 2016 um 09:52)

  • 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.

Jetzt mitmachen!

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