基于树莓派的简单超声波测距智障车
第一次写博客
第一次用树莓派做项目
第一次写python正式的写代码
网上查了很多资料总算成功一次(非常粗糙待改进),不喜勿喷哦
预备材料
超声波测距模块
树莓派3B+
杜邦线若干
L298N驱动(作为下行机控制轮子转动)
车架什么的自备了hhhh
充电宝(给树莓派供电)(推荐用小米的那种(没收小米的广告费),部分充电宝不适用(主要原因是会逆向充电))
电池盒(其实6V或者9V的就可以了,电压太高容易撞车)
一切准备就绪,就可以快乐的开车了…
(预备知识,了解一下L298N的运行原理和树莓派的GPIO口使用就可以了,具体的也可以边看代码边学)
功能分析:
1.探测距离
2.当距离小于一定的值时左转或右转
3.当距离特别小的时候直接倒车
废话不多说,直接上代码,在树莓派里运行就可以了
import RPi.GPIO as GPIO
import time
TRIG = 11
ECHO = 12
ENA = 29
ENB = 36
IN1 = 31
IN2 = 33
IN3 = 38
IN4 = 40
def stop():
GPIO.output(ENA, 1)
GPIO.output(ENB, 1)
GPIO.output(IN4, 0)
GPIO.output(IN3, 0)
GPIO.output(IN2, 0)
GPIO.output(IN1, 0)
print 'stop'
def left():
GPIO.output(ENA, 1)
GPIO.output(ENB, 1)
GPIO.output(IN4, 0)
GPIO.output(IN3, 1)
GPIO.output(IN2, 0)
GPIO.output(IN1, 1)
print 'left'
def right():
GPIO.output(ENA, 1)
GPIO.output(ENB, 1)
GPIO.output(IN4, 1)
GPIO.output(IN3, 0)
GPIO.output(IN2, 1)
GPIO.output(IN1, 0)
print 'right'
def forward():
GPIO.output(ENA, 1)
GPIO.output(ENB, 1)
GPIO.output(IN4, 0)
GPIO.output(IN3, 1)
GPIO.output(IN2, 1)
GPIO.output(IN1, 0)
print 'foward'
def backward():
GPIO.output(ENA, 1)
GPIO.output(ENB, 1)
GPIO.output(IN4, 1)
GPIO.output(IN3, 0)
GPIO.output(IN2, 0)
GPIO.output(IN1, 1)
print 'backward'
def setup():
GPIO.setmode(GPIO.BOARD)
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)
GPIO.setup(ENA, GPIO.OUT)
GPIO.setup(ENB, GPIO.OUT)
GPIO.setup(IN1, GPIO.OUT)
GPIO.setup(IN2, GPIO.OUT)
GPIO.setup(IN3, GPIO.OUT)
GPIO.setup(IN4, GPIO.OUT)
print 'setup'
def distance():
GPIO.output(TRIG, 0)
time.sleep(0.000002)
GPIO.output(TRIG, 1)
time.sleep(0.00001)
GPIO.output(TRIG, 0)
while GPIO.input(ECHO) == 0:
a = 0
time1 = time.time()
while GPIO.input(ECHO) == 1:
a = 1
time2 = time.time()
during = time2 - time1
return during * 340 / 2 * 100
def loop():
while True:
dis = distance()
print dis, 'cm'
print ''
time.sleep(0.3)
def destroy():
GPIO.cleanup()
if __name__ == "__main__":
setup()
try:
loop()
a = distance()
while a <= 20 & a >= 5:
left()
while a > 20:
forward()
while a < 5:
backward()
except KeyboardInterrupt:
destroy()
树莓派笔记(一)
OVER!