2016-09-14 2 views
0

Für ein Projekt habe ich einen Raspberry Pi (laufendes dexter industriesmodified raspbian) und Brick Pi benutzt, um Lego-Motoren laufen zu lassen. Ich habe ein Programm mit Python geschrieben und es funktioniert gut und alle, aber ich brauche das gesamte Programm wiederholt auszuführen, wenn der Drucksensor nicht gedrückt wurde. Ich habe versucht, die Funktion sensorValue() aufzurufen (die erkennt, ob der Drucksensor gedrückt wurde) unter while True :. Aber sobald ich das gemacht habe, wurde das komisch. Es würde einfach fortfahren, auf unbestimmte Zeit zu wiederholen und selbst wenn ich den Sensor drückte, würde die wiederkehrende 0 zu 1 werden, aber es würde nicht die nächste Funktion aufrufen, die ich brauche, um sie auszuführen.Wie man ein Python-Programm komplett neu startet

Bitte helfen Sie, das ist mein erstes Mal tatsächlich mit Python, um alles zu schreiben, und ich bin ein massiver Anfänger, so dass jede Hilfe sehr geschätzt wird.

Dank wieder

from BrickPi import * 

BrickPiSetup() 
BrickPi.MotorEnable[PORT_A] = 1 
BrickPi.SensorType[PORT_4] = TYPE_SENSOR_TOUCH 

BrickPiSetupSensors() 

def sensorValue(): 
    result = BrickPiUpdateValues() 
    if not result : 
     print BrickPi.Sensor[PORT_4] 
    time.sleep(.01) 
    if BrickPi.Sensor[PORT_4] == 0: 

def programBody(): 

    print ("program rest/pause") 
    BrickPi.MotorSpeed[PORT_A] = 0 
    BrickPiUpdateValues() 
    time.sleep(3) 

    print ("reminder/alarm = 200 value") 
    BrickPi.MotorSpeed[PORT_A] = 200 
    ot = time.time() 
    while(time.time() - ot <3): 
     BrickPiUpdateValues() 
     time.sleep(.01) 

    print ("reminder/alarm = 125 value") 
    BrickPi.MotorSpeed[PORT_A] = 125 
    ot = time.time() 
    while(time.time() - ot <3): 
     BrickPiUpdateValues() 
     time.sleep(.01) 

sensorValue() #I would put while True: here but... 

if BrickPi.Sensor[PORT_4]: 
    print "program successfully initiatied" 
    programBody() 
+0

könnte man x == 1 Run-Programm dann nicht tun, während, wenn es lief erfolgreich es, wenn die Bedingung isn auf 0 und dann gesetzt haben‘ t met dann dann zurück zu 1. – thesonyman101

+0

@ thesonyman101 wirklich leid, aber ich bin ein totaler Noob bei diesem, noch nie eine tatsächliche Python, könnten Sie mir hier draußen helfen und führen Sie mit durch, was Sie geschrieben haben? Danke –

+0

sicher habe ich etwas wirklich schnell gemacht – thesonyman101

Antwort

1

versuchen diese

import BrickPi,time 

BrickPiSetup() 
BrickPi.MotorEnable[PORT_A] = 1 
BrickPi.SensorType[PORT_4] = TYPE_SENSOR_TOUCH 

BrickPiSetupSensors() 

z = 0 
def mainprogram(): 
    print ("running") 
    while x == 1: 
     z = z + 1 
     print ("the plate has been pressed for %s seconds" % z) 
     time.sleep(1) 

while True: 
    time.sleep(.1) 
    if BrickPi.Sensor[PORT_4]: 
     print "program successfully initiatied" 
     mainprogram() 
Verwandte Themen