树莓派python编程小车_【树莓派】树莓派小车(三)Python控制小车
正文之前
由于最近忙于复习赶考,所以暂时没有拿起树莓派小车,直到昨天,终于空出时间来把代码整理一下来和大家分享。
正文
在树莓派小车系列之二中,讲到了树莓派的引脚定义方式有两种:
PHYSICAL NUMBERING
GPIO NUMBERING
我采用的是第二种方式。
开始写
1. 导入库
import RPi.GPIO as GPIO
import time
2. 定义接口方式以及接口位置
GPIO.setmode(GPIO.BCM)
IN1 = 17
IN2 = 18
IN3 = 27
IN4 = 22
IN5 = 23
IN6 = 24
IN1 - IN4为L298N接入,IN5和IN6为红外线模块接入。
车轮驱动方式:
IN1和IN2负责驱动车轮转动(前进)。
IN3和IN4负责驱动车轮转动(后退)。
3. 初始化
def init():
GPIO.setup(IN1, GPIO.OUT)
GPIO.setup(IN2, GPIO.OUT)
GPIO.setup(IN3, GPIO.OUT)
GPIO.setup(IN4, GPIO.OUT)
GPIO.setup(IN5, GPIO.IN)
GPIO.setup(IN6, GPIO.IN)
连接L298N的接口设为输出,因为需要输出的信号来驱动电机。
连接红外线模块的接口为输入,因为需要输入的信号来做出判断。
4. 基础方向行为
def up():
GPIO.output(IN1, GPIO.HIGH) //右侧车轮前进
GPIO.output(IN2, GPIO.HIGH) //左侧车轮前进
GPIO.output(IN3, GPIO.LOW)
GPIO.output(IN4, GPIO.LOW)
def down():
GPIO.output(IN1, GPIO.LOW)
GPIO.output(IN2, GPIO.LOW)
GPIO.output(IN3, GPIO.HIGH) //右侧车轮后退
GPIO.output(IN4, GPIO.HIGH) //左侧车轮后退
def turn_left():
GPIO.output(IN1, GPIO.HIGH) //右侧车轮前进
GPIO.output(IN2, GPIO.LOW)
GPIO.output(IN3, GPIO.LOW)
GPIO.output(IN4, GPIO.LOW)
def turn_right():
GPIO.output(IN1, GPIO.LOW)
GPIO.output(IN2, GPIO.HIGH) //左侧车轮前进
GPIO.output(IN3, GPIO.LOW)
GPIO.output(IN4, GPIO.LOW)
需要说明的是:由于不含舵机,转弯的操作是单边车轮驱动,带动车身转动
5. 红外控制
init()
n = 5
while (n > 0): //总共转弯五次
in_left = GPIO.input(IN5) //左侧红外线接收器
in_right = GPIO.input(IN6) //右侧红外线接收器
up() //未遇到障碍时直行
if (in_left == GPIO.LOW):
down()
time.sleep(1)
turn_right()
time.sleep(1)
n = n - 1
continue
if (in_right == GPIO.LOW):
down()
time.sleep(1)
turn_left()
time.sleep(1)
n = n - 1
continue
if (in_right == GPIO.LOW & in_left == GPIO.LOW):
down()
time.sleep(1)
turn_right() //如果两侧都有障碍,就右转(个人喜好)
time.sleep(1)
n = n - 1
continue
stop()
GPIO.cleanup() //清空GPIO接口配置信息
如果前方遇到障碍,就后退一秒,然后转弯,最后继续直行,直到遇到下一个障碍。
需要说明的是time.sleep()的用法:
time.sleep(time) 表示的是经过 time 秒后执行下一步操作,就是休眠一段时间的意思。
如果不使用time.sleep(),将会一直执行第一步操作。
关于运行:
由于红外传感器的有效距离偏短(5cm左右),以及传感器的安装位置在车的底部,所以在车辆运动时,如果遇到凹凸不平的物体,有可能造成避障的延迟。
运行视频
遇到凹凸不平的物体有些许碰撞(环境简陋)
关于树莓派信息的内容就先告一段落,等我做出安卓遥控app再来介绍,谢谢大家的关注。
树莓派python编程小车_【树莓派】树莓派小车(三)Python控制小车相关推荐
- python编程学习_使用EduBlocks轻松学习Python编程
python编程学习 如果您正在寻找一种让学生(或您自己)从Scratch编程转向学习Python的方法 ,建议您研究EduBlocks . 它为Python 3编程带来了熟悉的拖放式图形用户界面(G ...
- 青少年python编程入门书籍_新书推荐 | 《青少年Python编程入门——图解Python》
原标题:新书推荐 | <青少年Python编程入门--图解Python> 随着信息时代的到来,在编程教育中进行计算思维培养正在成为信息技术教育关注的重点.<普通高中信息技术课程标准( ...
- python编程广告_为什么铺天盖地都是Python的广告?
Python 第一个优势是语法风格优秀, 通俗的说法就像是白话文对比于文言文, 容易上手, 又能传达深入的意义. 编程入门的几个基本问题就是如何理解抽象概念以及利用语法构建流程(面向过程)和描述对象( ...
- 计算机科学与python编程导论_计算机科学入门和使用Python编程
你将学到什么 A Notion of computation The Python programming language Some simple algorithms Testing and de ...
- ipad python编程软件_在iPad中运行Python
从一个喜欢编程的人的角度看,任何移动设备其实都只是"可编程计算器". iPad上也有一个Python的解释器的应用Python for iOS.不过,让人气愤的是,这个应用竟然是收 ...
- 树莓派python编程自学-一些缩短树莓派学习曲线的书籍、课程和网站
树莓派是一款小型单板计算机,最初用于教学和学习编程和计算机科学.但如今它有更多用处.它是一种经济的低功耗计算机,人们将它用于各种各样的事情 -- 从家庭娱乐到服务器应用,再到物联网(IoT) 项目. ...
- 计算机编程导论python程序设计答案-学堂在线_计算机科学与Python编程导论_作业课后答案...
学堂在线_计算机科学与Python编程导论_作业课后答案 答案: 更多相关问题 近代中国完全沦为半殖民地半封建社会的标志是:A.<马关条约>B.<辛丑条约>C.<凡尔赛和 ...
- python编程基础_月隐学python第2课
python编程基础_月隐学python第2课 学习目标 掌握变量的输入和输出 掌握数据类型的基本概念 掌握算数运算 1.变量的输入和输出 1.1 变量输入 使用input输入 input用于输入数据 ...
- python交互式程序设计导论答案第五周_学堂在线_计算机科学与Python编程导论_章节测试答案...
学堂在线_计算机科学与Python编程导论_章节测试答案 更多相关问题 素描的三种表现形式是:(). 运行下列程序:Private Sub form_Click()For i = 1 To 2x = ...
- 计算机编程导论python程序设计答案-学堂云_计算机科学与Python编程导论_作业课后答案...
学堂云_计算机科学与Python编程导论_作业课后答案 答案: 更多相关问题 保本基金参与股指期货交易,应当根据风险管理的原则,以套期保值为目的.() 基金经理主要依据股票投资价值报告来决定实际的投资 ...
最新文章
- 软件开发文档模板 (学习)
- pythonweb编程免费教程_python – Web编程教程
- 20145321 《Java程序设计》第7周学习总结
- requestWindowFeature()的应用
- C语言struct中冒号用法
- windows编程点滴(四)之线程的同步
- 笔记本电脑电源已接通未充电_dell xps15 电源已接通 未充电 维修方法
- 多线程之CountDownLatch和CyclicBarrier的区别和用法
- 元素(洛谷-P4570)
- 算法训练 P1101(java)
- jna调取第三方dll实战(罗技G29)
- SaaSpace:25款最佳免费视频编辑软件工具
- CentOS 7下Red5流媒体服务器的搭建与测试
- 模式识别学习笔记(8)——隐马尔可夫模型
- OpenXR+Runtime:OpenXR SDK与Runtime的衔接
- 安装包时遇到 requires a peer of @angular/core、unmet peer dependency...的问题
- 新电脑安装Ubuntu的血泪史:UEFI+GPT模式下在同一块固态硬盘上安装win10和Ubuntu16.04双系统
- Consumer接口和Supplier接口
- 如何是音乐再ios展台
- 关于CSS的一些属性