我正在尝试建立一个可以通过网站控制自己的机器人
我编写了一个Python脚本,让机器人以(或多或少)直线驱动。通过网站激活脚本没有问题,但是当我尝试停止并重新启动它时会出现问题。
当我点击停止按钮时,它会在php文件中执行此操作:
exec("sh /home/pi/Maxwheel/ScriptePython/geradeaus/kill.sh");
exec("sudo python /home/pi/Maxwheel/ScriptePython/geradeaus/stopp.py");
kill.sh将执行此命令以终止python脚本:
sudo pkill -f vorne.py
stopp.py将再次清除引脚。我已经在Python脚本结束时这样做了,但是当我简单地杀死脚本时,我已经经历过机器人仍将向前推进。我认为杀死脚本不会触发GPIO.cleanup()
在我的Python脚本结束时。是的,Python脚本被停止/终止(用ps aux | grep python
检查)
然后机器人停下来。但是当我尝试通过按钮再次启动脚本时,机器人无法正常启动。它会尝试开车但只停留一秒然后停下来。在那之后我必须推它然后它将再次开车一秒钟。这对我来说没有意义,因为Python脚本处于循环中,因此机器人永远不会停止。即使我尝试手动启动脚本也无法工作。
这是来自" stopp.py"的代码。我只是像在Python脚本中那样设置了所有的Pins并在之后立即清理它们。
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
GPIO.setup(18, GPIO.OUT)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(17, GPIO.OUT)
GPIO.setup(27, GPIO.OUT)
GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(6, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.cleanup()
答案 0 :(得分:0)
由于您似乎没有看到错误,我会尝试这样做。可能是您的代码没有进入清理阶段。
import RPi.GPIO as GPIO
try:
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
GPIO.setup(18, GPIO.OUT)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(17, GPIO.OUT)
GPIO.setup(27, GPIO.OUT)
GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(6, GPIO.IN, pull_up_down=GPIO.PUD_UP)
except Exception as exc:
print('Error : {}'.format(str(exc)))
finally:
GPIO.cleanup()