0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用Arduino和距离传感器制作小鸡赛车!(第3篇•最终篇)

李明聪 来源:DevicePlus 作者:DevicePlus 2023-02-20 11:12 次阅读

该项目旨在介绍用Arduino传感器工作的一个电子作品。此次的分享嘉宾是福田和宏先生!他过去曾在DevicePlus上连载过“Arduino基础”等作品。

在第2篇中,我们了解了小鸡赛车中使用的电子部件的工作情况以及整个电子电路的制作过程。本文是第3篇,也是本项目的最后一篇,在这里我们将制作壳体和程序,彻底完成小鸡赛车。

制作壳体

我决定使用第1篇中提到的“圆形机器人底盘套件”来制作壳体。利用圆形机器人底盘套件中的两枚金属板做成两层,再安装上电机和车轮,即可轻松完成能行驶的车身了。

但是,对于这次需要安装两块电路板、两节电池、还有超声波距离传感器和微动开关的情况而言,实在是显得太拥挤了。另外,仅凭圆形机器人底盘套件附带的前轮用球头难以直行,而且一旦有点台阶,行进方向还可能会发生偏移。

因此,我决定使用3D打印机自己制作所需部件,以完成壳体制作。我使用的是3D打印机,这种打印机也可以加工板子类的部件,大家也可以试试。

安装电机和车轮

在最底下的一层,除了左右两个电机外,还需要安装第2篇中制作的用来控制电机的电路板。另外,我在赛车的前部安装了自己用3D打印机制作的支架,使之起到加长的作用,以便安装迷你四驱车轮作为前轮。此外,还在与前方墙壁碰撞的部分安装了左右两个微动开关。

pYYBAGPyzwyAGPi6AAKdW0xTFzo761.png

安装超声波传感器和电池

在电机上方一层安装电池。这次,我分别准备了Arduino和电机工作用的电池。两者都是可提供9V电压的006P电池。小鸡赛车会受到诸如与墙壁碰撞等的冲击。因此,如果不将电池安装牢固,就可能会脱落。另外,由于电机的用电量较大,所以很容易耗尽电池电量。为了便于在没电时更换电池,我用3D打印机做了一个电池盒,这样就能从背面很方便地更换电池了。

除此之外,还在前方安装了超声波传感器,以测量到墙壁之间的距离。这次使用的超声波传感器“HC-SR04”无法测量小于2cm的距离。出于这个原因,超声波传感器应安装在至少离小鸡赛车头部(微动开关被按下的位置)之后2cm的位置。

poYBAGPyzw6ATkZxAAN1POjRMco380.png

安装主板

将主板安装到赛车顶部。我用3D打印机制作了电池盒的顶盖,这样,就可以将主板安装在它上面了。

poYBAGPyzxCANpl-AAPkhMYVLk8918.png

组装好车身后,安装车轮,然后将每个电子部件的导线连接到主板上,就完成了。

pYYBAGPyzxKAHzpKAAPYpfEsFZE499.png

另外,由于控制开关是用导线连接的,因此需要准备几米左右的导线并将其接到开关上。

用保险杠吸收冲击

如果玩家未能在最后一刻将赛车停下来,那么小鸡赛车就会撞到墙上。而撞到墙上后,车身就会受到冲击。特别是如果有像这次这样的由3D打印机打印的部件时,它们可能会因撞击而开裂。而且,超声波距离传感器也可能会错位,从而无法准确地测量距离。

基于这些可能出现的问题,我给小鸡赛车安装了“保险杠”,以缓冲赛车与墙壁碰撞时的冲击力,防止车身断裂。保险杠上带有弹簧,可以吸收撞击墙壁时的冲击力,从而避免其影响车身。

这次我使用了通过3D打印机制作的保险杠。另外,在保险杠上面还装上了两个微动开关,用来检测与墙壁的碰撞。安装位置要确保墙壁碰到保险杠时开关被按下。

poYBAGPyzxSAUl_lAAKN7fsuN68200.png

当然,如果您打算以低速行驶赛车,即使有碰撞也不会产生多大的冲击力,那么就不需要安装保险杠。

创建程序

壳体做好后,我们还需要完成编程工作。程序的主要结构如下:

pYYBAGPyzxaAdSIGAACA2DsM6nk527.png

要想实现各个功能,就需把第1篇和第2篇中介绍过的让每个零部件工作的方法通过编程结合起来。例如,赛车行驶起来之后,判断控制开关被按下了还是保险杠被撞了的程序如下:

lcddisp.clear(); lcddisp.move( 0x00, 0x00 ); lcddisp.charwrite( " G O ! " ); digitalWrite( MOTOR1_PIN, HIGH ); flag = 0; while( 1 ){ if( digitalRead( BUMPER_PIN ) == LOW ){ flag = 2; break; } if( digitalRead( SW_PIN ) == LOW ){ flag = 1; break; } } digitalWrite( MOTOR1_PIN, LOW );

第1行到第3行,是在液晶显示器上显示“GO!”,让玩家知道即将开始行驶。通过第5行的digitalWrite() 将连接到电机驱动器的引脚设置为“HIGH”,电机旋转,赛车向前行驶。

通过第8行的while(),一直持续行驶,直到控制开关被按下或保险杠的微动开关被按下。在保持行进过程中,会随时确认控制开关和微动开关的状态。

第9行用来判断保险杠的开关是否被按下,即是否撞到了墙壁。通过digitalRead来确认微动开关所连接的引脚的状态,若为Low,则判断微动开关已被按下。通过将flag变量置“2”来记录撞到了墙壁。通过第11行的“break”退出while循环。

第13行用来判断控制开关被按下,即玩家按下停止开关。和微动开关的情况一样,通过确认控制开关所连接的引脚的状态,当变为“Low”时,判断开关已被按下。在flag变量中记录“1”并通过break退出循环。

退出循环后,通过第19行,将电机驱动器所连接的引脚置“Low”,使电机停止运行。

然后,确认flag变量并进行相应的处理。如果为“1”,则判断“成功”,通过超声波距离传感器测量到墙壁的距离,并显示在液晶显示器上。如果为“2”,则在液晶显示器上显示“Fail …”,表示挑战失败。

整个程序可以从以下链接下载

下载程序(chickenracer.zip)

关于其他处理,请参考下载的程序。您可以通过Arduino IDE打开文件,并将程序传输到Arduino Nano,即可用于小鸡赛车。

还配备了距离校准功能

在测量到墙壁之间的距离时,需要使撞墙状态下的距离为“0cm”。这个可以通过从超声波距离传感器测得的距离中减去超声波传感器和微动开关之间的距离来计算。例如,超声波距离传感器和微动开关之间的距离是3.5cm,测得的距离是5.1cm,那么到墙壁的距离可以计算得出“1.6cm”。

poYBAGPyzxiAV8UZAAEfKsNispQ183.png

但是,在使用过程中,安装位置可能会发生偏移,超声波距离传感器和微动开关之间的距离可能会发生变化。这样的话,即使撞墙,也不会是0cm,成功时测得的距离甚至可能会显示为负数。

在这种情况下,需要每次在程序中改写计算公式并将其传输到Arduino,这需要花费大量的时间和精力。因此,我决定安装一个可以轻松调整距离校准值的功能。

要进行校正,请确保小鸡赛车处于撞墙状态(微动开关被按下的状态),然后按下位于液晶显示器右下方的距离校准开关。接着,测量到墙壁的距离,通过从实际测量值中减去该值,即可得到正确的距离。

让小鸡赛车跑起来

poYBAGPyzxuAMMujAAJU9O0D4N8263.jpg

现在,让我们试试做好的小鸡赛车能不能跑起来。打开电源开关后,液晶显示器将显示“Chicken Racer”。想玩赛车比赛游戏时,请按下有线连接的控制开关。然后,LED将开始倒计时。

当倒计时LED变为绿灯时,小鸡赛车开始向前行驶。在快要撞上墙壁之前,按下控制开关,让小鸡赛车停下来。

如果您可以在不撞墙的情况下停下来,液晶显示器上将会显示出与墙壁之间的距离。如果失败,则会显示“Fail …”,让您知道失败了。如果在游戏结束后按下保险杠上的微动开关,就会被重置,您可以重新开始游戏。

到这里,小鸡赛车就大功告成了。本系列连载文章中介绍的电子部件的操作方法和制作过程,在创作其他作品时也会用得到,欢迎参考并尝试使用Arduino挑战各种电子作品的创作!

poYBAGPyzyGANl2-AAk6vSVzWPY891.jpg

福田和宏

作家,居住在日本札幌。喜欢撰写有关电子创作、电脑Linux智能手机等方面的文章。在为“Raspberry Pi Magazine”和“日经Linux”供稿。著有《这本书足够!Raspberry Pi超简单入门教程》(SOTECHSHA)、《学习各种电子元器件的控制!Arduino电子创作 实战教程》(SOTECHSHA)、《Arduino实用入门》(技术评论出版社)等书籍。目前,创办了“札幌电子工艺部”(https://sapporo-elec.com/),这里汇集了众多电子创作发烧友,大家使用各自的电子技能创作各种作品。任何人都可以参加,也期待您的加入!

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2548

    文章

    50656

    浏览量

    751803
  • 机器人
    +关注

    关注

    210

    文章

    28189

    浏览量

    206450
  • 电机
    +关注

    关注

    142

    文章

    8929

    浏览量

    145064
  • Arduino
    +关注

    关注

    187

    文章

    6463

    浏览量

    186617
  • 距离传感器
    +关注

    关注

    3

    文章

    74

    浏览量

    15107
收藏 人收藏

    评论

    相关推荐

    基于Arduino Nano和HC-SR04超声波传感器制作社交距离项目

    传感器制作社交距离项目。当距离小于或等于 3 英尺时 LED 模块自动开启,当距离大于
    发表于 08-09 06:30

    使用超声波传感器HC SR04和Arduino Uno制作超声波距离传感器

    电子发烧友网站提供《使用超声波传感器HC SR04和Arduino Uno制作超声波距离传感器.zip》资料免费下载
    发表于 10-31 09:35 1次下载
    使用超声波<b class='flag-5'>传感器</b>HC SR04和<b class='flag-5'>Arduino</b> Uno<b class='flag-5'>制作</b>超声波<b class='flag-5'>距离</b><b class='flag-5'>传感器</b>

    使用Arduino Uno和PIR传感器的社交距离项目

    电子发烧友网站提供《使用Arduino Uno和PIR传感器的社交距离项目.zip》资料免费下载
    发表于 11-15 10:21 0次下载
    使用<b class='flag-5'>Arduino</b> Uno和PIR<b class='flag-5'>传感器</b>的社交<b class='flag-5'>距离</b>项目

    使用Arduino和火焰传感器制作火灾探测系统

    电子发烧友网站提供《使用Arduino和火焰传感器制作火灾探测系统.zip》资料免费下载
    发表于 11-23 10:00 1次下载
    使用<b class='flag-5'>Arduino</b>和火焰<b class='flag-5'>传感器</b><b class='flag-5'>制作</b>火灾探测系统

    使用Labview、Arduino和超声波传感器制作距离/测距程序

    电子发烧友网站提供《使用Labview、Arduino和超声波传感器制作距离/测距程序.zip》资料免费下载
    发表于 11-30 11:19 6次下载
    使用Labview、<b class='flag-5'>Arduino</b>和超声波<b class='flag-5'>传感器</b><b class='flag-5'>制作</b><b class='flag-5'>距离</b>/测距程序

    使用Arduino制作停车传感器

    电子发烧友网站提供《使用Arduino制作停车传感器.zip》资料免费下载
    发表于 12-01 14:08 0次下载
    使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>停车<b class='flag-5'>传感器</b>

    使用Arduino制作触摸传感器

    电子发烧友网站提供《使用Arduino制作触摸传感器.zip》资料免费下载
    发表于 12-05 15:02 0次下载
    使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>触摸<b class='flag-5'>传感器</b>

    如何使用Arduino制作LED运动传感器

    电子发烧友网站提供《如何使用Arduino制作LED运动传感器.zip》资料免费下载
    发表于 12-12 10:39 0次下载
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>LED运动<b class='flag-5'>传感器</b>

    Arduino控制伺服电机来演奏乐器!

    1Arduino控制曲别针电动机2:非接触式开关的
    的头像 发表于 02-20 10:15 1205次阅读
    <b class='flag-5'>用</b><b class='flag-5'>Arduino</b>控制伺服电机来演奏乐器!

    Arduino和加速度传感器制作数字滚球迷宫【后篇】

    Arduino和加速度传感器制作数字滚球迷宫 这次将为大家介绍一个使用Arduino
    的头像 发表于 02-20 11:54 1642次阅读
    <b class='flag-5'>用</b><b class='flag-5'>Arduino</b>和加速度<b class='flag-5'>传感器</b><b class='flag-5'>制作</b>数字滚球迷宫【后篇】

    Arduino距离传感器制作小鸡赛车!(2

    1:在最后一刻停下来!Arduino距离传感器制作
    的头像 发表于 02-20 10:25 910次阅读
    <b class='flag-5'>用</b><b class='flag-5'>Arduino</b>和<b class='flag-5'>距离</b><b class='flag-5'>传感器</b><b class='flag-5'>制作</b><b class='flag-5'>小鸡</b><b class='flag-5'>赛车</b>!(<b class='flag-5'>第</b>2<b class='flag-5'>篇</b>)

    在最后一刻停下来!Arduino距离传感器制作小鸡赛车!(1

    到目前为止,我们已经在DevicePlus上介绍过Arduino的使用方法和一些应用案例。在本文中,我们将尝试一个Arduino传感器工作的电子作品。
    的头像 发表于 03-23 15:15 1553次阅读
    在最后一刻停下来!<b class='flag-5'>用</b><b class='flag-5'>Arduino</b>和<b class='flag-5'>距离</b><b class='flag-5'>传感器</b><b class='flag-5'>制作</b><b class='flag-5'>小鸡</b><b class='flag-5'>赛车</b>!(<b class='flag-5'>第</b>1<b class='flag-5'>篇</b>)

    一款Raspberry Pi和传感器制作的可穿戴式小型健康管理设备!第四部分•剧终篇

    1部分:Raspberry Pi Zero和罗姆SensorMedal制作健康管理设备!2部分:根据传感器的值计算步数、
    的头像 发表于 02-24 10:06 2175次阅读
    一款<b class='flag-5'>用</b>Raspberry Pi和<b class='flag-5'>传感器</b><b class='flag-5'>制作</b>的可穿戴式小型健康管理设备!第四部分•剧<b class='flag-5'>终篇</b>

    Raspberry Pi和传感器制作“可自动营造舒适空间的装置” 第四部分•剧终篇

    1回:Raspberry Pi和传感器制作“可自动营造舒适空间的装置” 第一部分2回:R
    的头像 发表于 02-24 10:17 732次阅读
    <b class='flag-5'>用</b>Raspberry Pi和<b class='flag-5'>传感器</b><b class='flag-5'>制作</b>“可自动营造舒适空间的装置” 第四部分•剧<b class='flag-5'>终篇</b>

    Arduino社交距离传感器

    电子发烧友网站提供《Arduino社交距离传感器.zip》资料免费下载
    发表于 06-30 14:33 0次下载
    <b class='flag-5'>Arduino</b>社交<b class='flag-5'>距离</b><b class='flag-5'>传感器</b>