无法移动我的避障器

2024-10-02 18:14:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Raspberrypi3的新手。我想用Raspberrypi3做一个避障机器人。我通过putty连接了我的rasberrypi进行远程访问。我成功地远程连接并编写了代码。 代码如下所示

你知道吗board:- Raspberrypi3 模型B 电机Driver:-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中(代码中提到的数字)。有什么问题?代码中有什么错误吗?或者我不能连接我的树莓皮通过腻子???如果是的,有没有其他方法,我可以远程连接我的树莓皮和机器人工作…对不起,我的英语不好。请帮助。提前谢谢你


Tags: echooutputgpiotimeassetupsleepout