2016-07-31 3 views
0

was ich versuche zu tun ist, habe meine RC auf Benutzer-Tastenanschlag reagieren und dann entsprechend fahren (vorwärts, rückwärts, links und rechts, etc). Allerdings habe ich auch einen Sensor an der Vorderseite montiert. Ich möchte dieses Lesen ständig messen und wenn es unter einem Schwellenwert liegt, bricht es aus der Schleife aus und das Programm stoppt. Ich habe Probleme damit, den Sensor ständig zu lesen.Ausführen einer While-Schleife, während der Sensoreingang ständig überprüft

Das Programm erhält gerade 1 Messwert, wenn Benutzer einen Tastendruck eingeben. Bitte helfen

d1 = distance() 

while (d1 >= 20): 
    d1 = distance() 

    if (d1 <= 20): 
     drive("stop") 

    char = getch() 

    if (char == "w"): 
     drive("forward") 

    char"" 

GPIO.cleanup() 
+0

Ist das auf einem Rapsberry Pi? –

+0

HALLO marko, ja, es ist –

Antwort

0

Wenn distance() Funktion ok ist es

d1 = distance() 

while (d1 >= 20): 
    d1 = distance() 

    char = getch() 

    if (char == "w"): 
     drive("forward") 

    char = "" #maybe this typo ? 

drive("stop") #there is no need for overlaping logic in case of 20 

GPIO.cleanup() 
funktionieren soll

Sie haben unterschiedlichen Ansatz verwenden

from threading import Thread 
import time 
dist = 0 

def distance(): # your function for messurment 
    global dist 
    dist = #your messurment, .. 

Thread(target = distance).start() 

time.sleep(1) #give it time to do some readings 

while(dist >= 20): 
    char = getch() 
    if(char == "w"): 
     drive("forward") 

drive("stop") 
GPIO.cleanup() 
+0

hallo Marko die Linie char = „“ nur den Tastendruck zurückgesetzt und wartet auf den nächsten Tastendruck, so dass, wenn „w“ gedrückt wurde, Auto vorwärts bewegen würde, dann diesen Tastendruck zurückgesetzt. Wenn eine Verwendung dann "s" eingeben würde es rückgängig machen, usw. –

+0

Blick auf Ihren Code und schaue auf meine, diese Zeile wird nicht einmal benötigt, da char nur innerhalb while-Schleife definiert ist, was nun genau ist mit Ihrem Code –

+0

was getch Bibliothek verwenden Sie, es gibt viele Löcher in Ihrer Frage, so benötigen Sie http://StackOverflow.com/Help/Mcve –

Verwandte Themen