Я пытаюсь создать робота, которым я могу управлять через веб-сайт.
Я написал скрипт 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, и сразу же очистил их.
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()