python - 无法移动我的避障机器人
问题描述
我是 Raspberrypi3 的新手。我想使用 Raspberrypi3 制作一个避障机器人。我通过腻子连接我的 rasberrypi 以进行远程访问。我成功远程连接并编写了代码。代码如下所示。
板:- Raspberrypi3 modelB 电机驱动器:-L293D
import RPi.GPIO as GPIO #Import GPIO library
import time
#Import time library
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM) # programming the GPIO by BCM pin numbers
TRIG = 17
ECHO = 27
led = 22
m11=16
m12=12
m21=21
m22=20
GPIO.setup(TRIG,GPIO.OUT) # initialize GPIO Pin as outputs
GPIO.setup(ECHO,GPIO.IN) # initialize GPIO Pin as input
GPIO.setup(led,GPIO.OUT)
GPIO.setup(m11,GPIO.OUT)
GPIO.setup(m12,GPIO.OUT)
GPIO.setup(m21,GPIO.OUT)
GPIO.setup(m22,GPIO.OUT)
GPIO.output(led, 1)
time.sleep(5)
def stop():
print "stop"
GPIO.output(m11, 0)
GPIO.output(m12, 0)
GPIO.output(m21, 0)
GPIO.output(m22, 0)
def forward():
GPIO.output(m11, 1)
GPIO.output(m12, 0)
GPIO.output(m21, 1)
GPIO.output(m22, 0)
print "Forward"
def back():
GPIO.output(m11, 0)
GPIO.output(m12, 1)
GPIO.output(m21, 0)
GPIO.output(m22, 1)
print "back"
def left():
GPIO.output(m11, 0)
GPIO.output(m12, 0)
GPIO.output(m21, 1)
GPIO.output(m22, 0)
print "left"
def right():
GPIO.output(m11, 1)
GPIO.output(m12, 0)
GPIO.output(m21, 0)
GPIO.output(m22, 0)
print "right"
stop()
count=0
while True:
i=0
avgDistance=0
for i in range(5):
GPIO.output(TRIG, False) #Set TRIG as LOW
time.sleep(0.1) #Delay
GPIO.output(TRIG, True) #Set TRIG as HIGH
time.sleep(0.00001) #Delay of 0.00001 seconds
GPIO.output(TRIG, False) #Set TRIG as LOW
#78th line..my code was struck up in this while loop
while GPIO.input(ECHO)==0:#Check whether the ECHO is LOW
GPIO.output(led, False)
pulse_start = time.time()
while GPIO.input(ECHO)==1: #Check whether the ECHO is HIGH
GPIO.output(led, False)
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start #time to get back the pulse to sensor
distance = pulse_duration * 17150 #Multiply pulse duration by 17150 (34300/2) to get distance
distance = round(distance,2) #Round to two decimal points
avgDistance=avgDistance+distance
avgDistance=avgDistance/5
print avgDistance
flag=0
if avgDistance < 15: #Check whether the distance is within 15 cm range
count=count+1
stop()
time.sleep(1)
back()
time.sleep(1.5)
if (count%3 ==1) & (flag==0):
right()
flag=1
else:
left()
flag=0
time.sleep(1.5)
stop()
time.sleep(1)
else:
forward()
flag=0
当我试图将我的机器人向前、向后、向左和向右移动时。它没有移动。我的代码卡在了 while 循环中。在 78 中。(代码中提到的数字)。有什么问题?代码有什么问题吗?或者我不能通过腻子连接我的树莓派吗???如果是的话,有没有其他方法可以远程连接我的树莓派并在机器人上工作……抱歉我的英语不好。请提前帮助。谢谢。
解决方案
推荐阅读
- java - java在子类构造函数中初始化基类字段
- python - 如何部署在 Azure 中运行 python 脚本的 node.js 应用程序?
- ios - Setting up data source for Sections in UITableView Based off of Data from Backend
- windows - 在 Windows 上使用 mp.get_property("path") 空格从 MPV 播放器返回的路径错误
- c# - Unity - 如何让我的跳跃动画循环正常工作?
- sql - How to use LIKE wild card on subquery?
- android - 我添加了配置文件活动,然后添加了动态图像配置文件和用户名。在我这样做之后,导航按钮根本不起作用
- java - Testing 4 numbers to see if its has 3 unique numbers
- java - 片段中的 Recyclerview 未立即显示警报对话框结果
- jquery - 如何从中获取价值/文本