python3编程小车_控制小车
上一节我们已经搭好了开发环境,接下来就可以写Python程序来控制小车了。首先用EV3主机、大型伺服马达和超声波传感器搭建一个小车:
可以自由发挥,我的小车完成后长这样:
下一步,我们用程序控制小车。首先根据马达和传感器接入的位置初始化如下:
motor = Motor(Port.B) # 接在B口
ultrasonic = UltrasonicSensor(Port.S4) # 接在4号口
然后,设置初始速度0表示静止:
speed = 0
通过传入1、-1和0分别表示加速、减速和停止:
def setSpeed(acc):
global speed
if acc < 0:
speed = max(0, speed - 1)
elif acc > 0:
speed = min(3, speed + 1)
else:
speed = 0
if speed > 0:
motor.run(speed * 90) # 设置每秒转N个90度
else:
motor.stop()
因为小车的初始速度为0,我们可以设定响应右键加速,左键减速,中键停止,上键停止并退出,用一个无限循环实现功能如下:
while True:
if not any(brick.buttons()): # 没有按任何按键
wait(10)
else:
if Button.LEFT in brick.buttons():
setSpeed(-1)
elif Button.RIGHT in brick.buttons():
setSpeed(1)
elif Button.CENTER in brick.buttons():
setSpeed(0)
elif Button.UP in brick.buttons():
setSpeed(0)
break
wait(500)
if ultrasonic.distance() < 200: # 检测到障碍物不足200毫米时
setSpeed(0)
因为EV3的控制API并没有提供回调,所以只能通过无限循环主动轮询。使用无限循环时需要注意,务必在每次循环内部通过wait()暂停若干毫秒,否则很容易耗尽CPU。最后,我们通过超声波传感器返回的距离判断是否自动停车。
加上声光特效后,来看看实际效果:
EV3的Python接口全部在pybricks包中,要查看完整的API,请在VS Code新建EV3工程时选择“Open user guide and examples”,即可在本地浏览器打开API文档。
参考源码
python3编程小车_控制小车相关推荐
- 树莓派python编程小车_树莓派小车教程(三)——软件代码
原标题:树莓派小车教程(三)--软件代码 树莓派小车教程(三)--软件代码 2017-07-07 琳小豆 HelloWorld少儿编程 树莓派小车教程 (三) 在上一次教程中,我们已经完成了硬件连接. ...
- python3编程实战_生信编程实战第3题(python)
image.png wget ftp://ftp.ensembl.org/pub/release-87/gtf/homo_sapiens/Homo_sapiens.GRCh38.87.chr.gtf. ...
- arduino 无人驾驶小车_无人驾驶小车的实现也没那么复杂
无人驾驶小车的实现也没那么复杂mp.weixin.qq.com 2020-01-02 19:10 本文作者:吴东昱,北京钢铁侠科技深度学习算法工程师,主要研究深度学习.无人驾驶等. 我在观察历届智能 ...
- python3编程入门_在类Unix系统上开始Python3编程入门
>>> s 'Hello' >>> x = len(s) >>> print("The length of %s is %d" ...
- STM32循迹小车/Android蓝牙控制小车(三)
STM32循迹小车/Android蓝牙控制小车(三) 循迹蓝牙小车的第三篇终于来了,这篇开篇先来介绍一下整个开发过程中得构思思路.本来这应该放在第一篇,但是实际思路会因为开发过程中遇到的问题而改变,到 ...
- python机器人编程——差速机器人小车的控制,控制模型、轨迹跟踪,轨迹规划、自动泊车(上)
目录 一.前言 二.差速小车机器人的运动分析 三.正向运动控制模型推导 3.1问题描述 3.2符号定义 3.3算式推导 Step1 寻找数量关系,求出圆周半径,角度变化 Step2 获取相对坐标 St ...
- 2019年大学生智能车大赛室外光电组+在ROS下搭建仿真模拟环境,编程控制小车完成定位导航仿真
2019年大学生智能车大赛室外光电组+在ROS下搭建仿真模拟环境,编程控制小车完成定位导航仿真 一.前言 二.准备工作 1.创建工作空间 2.下载racecar源代码包,并编译工程 三.启动仿真 1. ...
- 无线控制模块c语言编程,基于STM32F103ZET6无线语音控制小车设计与实现.doc
基于STM32F103ZET6无线语音控制小车设计与实现 基于STM32F103ZET6无线语音控制小车设计与实现 摘要:本文以STM32F103ZET6单片机作为控制核心,通过LD3320语音识别模 ...
- 基于stm32的蓝牙遥控智能小车_基于51用蓝牙控制小车(提高篇)
一,焊接51最小系统 一辆小车的基本功能就是让它能动起来,能通过手机蓝牙进行遥控,所以就需要用到L298N电机驱动模块,和HC-06蓝牙模块.下面就简单介绍一下这两个模块. 三,制作电机驱动模块 电机 ...
最新文章
- 类继承、组合和抽象类
- java 观察者模式示例_Java中的观察者设计模式-示例教程
- asp: menu 父级选中
- list选取多个元素 python_【幼儿园级】0基础学python一本通(上)——AI未来系列1...
- c++ 遍历所有点且距离最短_图解:最短路径之迪杰斯特拉算法
- matlab电力系统潮流计算软件matpower_衡真课堂 | 电力系统稳态与暂态分析
- 使用C#列出所有中文汉字
- JAVA项目开发之文档篇
- c8500刷机 转帖
- React-Pdf使用过程心得
- web开发第三方登陆之facebook登陆
- 二叉树给我的人生感悟
- 笔记本创建wifi热点
- 怎么上传云班课的计算机作业,太棒了!云班课助你轻松玩转这9种作业!
- 【尚硅谷】Vue.js从入门到精通笔记
- JS中设计模式的深入理解
- 使用高德地图的逆向地址,获取坐标点
- vue中css写法_vue css 写法大全
- 马上2021年了线性表你还不知道原理?给老王整的明明白白
- SCI论文投稿会经历哪些状态?
热门文章
- JavaWeb之AjaxJSON
- spring cache相关注解介绍 @Cacheable、@CachePut、@CacheEvict
- 华为认证数通考试要改版了?什么情况?还好考了吗
- 求一个n*n矩阵对角线元素之和C语言,求一个n*n矩阵主对角线之和,次对角线元素之和.用指针完成...
- WLAN--什么是信道(Channel)
- Vistual Studio Code中Markdown使用数学公式
- RGB 和 CMYK 相互转换
- quartus 13.0 之四位全加器(不需要用modelism的歪门邪道)
- 2020年有寓意的领证日期_2020领证吉日
- 安装wordcloud库的方法