Využij akce až 80 % zdarma při nákupu e-learningu. Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se Pythonu
python week
Avatar
Václav Nikel:5.4.2020 16:52

Ahoj, píšu program pro snímání rychlosti a její porovnávání.

#import
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)
GPIO.setup(16,GPIO.IN)

startTime = 0
counter = 0
obvod = 120
delta = 0

def speed (x):
    global counter
    if  counter == 0:
            global startTime
            startTime = time.time()
            counter = 1
            print("start")
    elif    counter == 1:
            global delta
            delta = (time.time() - startTime)
            print("rychlost je", obvod / delta, "cm/s")
            print(delta)
            print("konec měření")
            counter = 0
    return delta

GPIO.add_event_detect(16, GPIO.RISING, callback=speed,) #čekání na rozjezd (první impulz)
print("dále?")

funkce funguje, na vstupu 16 GPIO snímá vzestupnou hranu z hallovy sondy, vypočítá rychlost a vypíše výsledek.

Potřebuji, aby program pokračoval dále - příkaz print("dále") proběhne jen jednou, po spuštění programu a pak po ukončení funkce už ne.

Zkusil jsem: Problém jsem původně řešil cyklem while, a zjišťoval stejnou podmínku.

Chci docílit: Měření rychlosti a porovnávání s dalšími hodnotami.

 
Odpovědět
5.4.2020 16:52
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Jan Šesták
Člen
Avatar
Odpovídá na Václav Nikel
Jan Šesták:28.4.2020 9:49

Dobrý den, jsem v programování začátečník a zkušení poradí asi více. Tento kus kódu výše pouze zaregistruje Vaši funkci na náběžnou hranu, netuším jestli trvale a potom už nic - program končí. Zkuste doplnit o nekonečnou smyčku.

 
Nahoru Odpovědět
28.4.2020 9:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.