1. 制作需求

家里面小朋友很喜欢玩具小汽车,但是总是三分钟热度,玩了几次就丢在一边,于是就想着自己动手来做小汽车,最好是可以修改程序的,这样就可以不断添加一些新的功能进去,让小朋友保持新鲜感。

第一次制作玩具小汽车,对功能的期望不能太高,于是大概列了几点基本功能:

  1. 能前进、后退、左转、右转
  2. 能通过遥控来控制
  3. 能播放音乐

按照这个需求清单,我在网上找了一些实现方案,后来就找到了一个特别适合我的小白开发神器——Arduino。

Arduino是一款方便上手的开源电子原型平台,包含Arduino电路板和Arduino IDE程序开发环境两个部分。只要在开发环境中编写程序代码,将程序上传到Arduino电路板后,程序就会告诉Arduino电路板要做些什么。对于没有什么单片机基础的小白来说,可以说是非常友好了。

2.在参考了各种制作视频之后,大概确定了要准备哪些材料

名称 图片
7.4V锂电池(可充电)
Arduino开发板
2WD小车底盘套件
电机驱动
红外遥控接收头,遥控器
MP3解码播放器、扬声器、U盘
彩排杜邦线、铜柱、螺丝、螺母  
工具:焊枪、焊锡丝、螺丝刀、万用表 ----

3. 安装接线

第一步:组装2WD小车底盘套件

第二步:连接电机驱动

选用的电机驱动板(淘宝上找的一个能驱动两个直流电机的驱动板)接受2-10V电源供电,这里我直接用7.4V的锂电池给它供电,IN1-IN4是PWM控制信号输入口,分别接Arduino开发板的5、6、9、10引脚,输出Motor-A,Motor-B分别接左轮和右轮两个直流电机。

第三步:连接红外接收器

红外接收器包含三个引脚,电源正负引脚和信号输出引脚,电源正极接Arduino开发板的5V引脚,电源负极接Arduino开发板的GND,信号输出引脚接Arduino开发板的2号引脚。

第四步:连接MP3解码播放器、扬声器

淘宝上找的一个能通过红外遥控器控制的MP3解码器,可以播放U盘中的mp3文件,供电电源5V,电源负极接Arduino开发板的GND,正极接Arduino开发板的5V引脚。输出引脚接一个3瓦,4欧的扬声器。

总的接线示意图如下:

小车接线实物图如下:

4. 编写代码

#include <IRremote.h>
#define choose 2                        // 1 串口模式;2 运行模式
int leftNeg=5;                         // 5号引脚控制左轮负极
int leftPos=6;                         // 6号引脚控制左轮正极
int rightNeg=9;                            // 9号引脚控制右轮负极
int rightPos=10;                       // 10号引脚控制右轮正极
int dt=2000;                           // 延时
void motor_init();                      // 电机初始化函数
void forward();                         // 前进
void back();                            // 后退
void turnLeft();                        // 左转
void turnRight();                       // 右转
void _stop();                           // 停止const int irReceivePin=2;             // 2号引脚用于接收红外信号
IRrecv irrecv(irReceivePin);            // 创建红外接收对象
decode_results results;                 // results用于保存红外信号结果void rev(void);                         // 接收红外信号,控制小车
void scan(void);                        // 测试红外信号,打印输出接收代码void setup() {                         // 配置函数Serial.begin(9600);                  // 设置串口 motor_init();                           // 调用电机初始化函数irrecv.enableIRIn();                // 启用红外线接收
}void loop() {                          // 主循环if (choose==1) scan();              // 如果模式为1,测试红外信号代码else if (choose==2) rev();           // 如果模式为2,接收信号,控制小车·
}void motor_init(){                     // 电机初始化函数pinMode(leftNeg, OUTPUT);             // 将5,6,9,10引脚设为输出模式pinMode(leftPos, OUTPUT);pinMode(rightNeg, OUTPUT);pinMode(rightPos, OUTPUT);
}void forward(){                            // 前进analogWrite(leftPos,120);              // 左轮正转analogWrite(leftNeg,0);analogWrite(rightPos,120);            // 右轮正转analogWrite(rightNeg,0);
}void back(){                           // 后退analogWrite(leftPos,0);                // 左轮反转analogWrite(leftNeg,120);analogWrite(rightPos,0);                // 右轮反转analogWrite(rightNeg,120);
}void turnLeft(){                       // 左转analogWrite(leftPos,0);                // 左轮反转analogWrite(leftNeg,120);analogWrite(rightPos,120);          // 右轮正转analogWrite(rightNeg,0);
}void turnRight(){                      // 右转analogWrite(leftPos,120);              // 左轮正转analogWrite(leftNeg,0);analogWrite(rightPos,0);              // 右轮反转analogWrite(rightNeg,120);
}void _stop(){                          // 停止analogWrite(leftNeg,0);                // 全部置低电平analogWrite(leftPos,0);analogWrite(rightNeg,0);analogWrite(rightPos,0);
}void rev(void){if(irrecv.decode(&results)){            //接收红外信号,结果保存在results中irrecv.resume();                   //继续等待接收下一组信号if (results.value==16718055){        // 按遥控上的数字键2,前进forward();delay(dt);_stop();} else if(results.value==16730805){ //按遥控上的数字键8,后退back();delay(dt);_stop();}else if(results.value==16716015){  //按遥控上的数字键4,左转turnLeft();delay(dt);_stop();}else if(results.value==16734885){  //按遥控上的数字键6,右转turnRight();delay(dt);_stop();}else if(results.value==16726215){ //按遥控上的数字键5,停止_stop();delay(dt);}}
}void scan(void){                       // 测试红外信号,打印输出接收代码if(irrecv.decode(&results)){       //接收红外信号,结果保存在results中irrecv.resume();                   //继续等待接收下一组信号Serial.println(results.value, DEC); //打印接收到的按键代码}
}

自制基于Arduino的玩具小汽车相关推荐

  1. 自制基于arduino的GPS地图导航系统 原型

    这是一篇关于动手制作基于arduino 和12864液晶模块的图形化显示GPS导航系统的帖子,作品效果和成本可能无法和TB上的导航产品媲美,但是动手过程会带给你乐趣和知识. 动手之前最好能具备一些背景 ...

  2. 使用加速度计DIY自制基于Arduino手势控制的空中鼠标

    曾经想知道我们的世界是如何走向沉浸式现实的.我们不断寻找与周围环境互动的新方式和方法,使用虚拟现实.混合现实.增强现实等.每天都有新设备通过这些快速技术推出,以通过他们的新互动技术给我们留下深刻印象. ...

  3. 基于Arduino的草缸自动控制系统

    [智能草缸-哔哩哔哩] https://b23.tv/Pxea9NK 很早之前就想要实现一个全自动控制的草缸,当时是19年刚研究生入学,正好在本科毕业的暑假时间,有在培训机构教学Micro bit的硬 ...

  4. 基于Arduino的智能晾衣架

    前段时间,由于个人原因没有及时更新,今天准备写一个基于Arduino的智能晾衣架. 摘要: 智能晾衣架是应用物联网工程技术,通过网络和物品的连接得以控制晾衣架的状态.智能晾衣架通过多个传感器来对外界环 ...

  5. 基于Arduino单片机的nRF24L01+无线遥控装置设计(爆肝制作)

    目录 前言 一.总体思路 二.硬件介绍 (一)主机 (二)从机 三.电路设计 (一)主机 (二)从机 四.程序代码 (一)主机 (二)从机 五.总结及改进 六.所用到的文献链接 前言 此文章只涉及单片 ...

  6. STM32G070RBT6基于Arduino框架下点灯程序

    STM32G070RBT6基于Arduino框架下点灯程序 ✨说明:Arduino STM32系列开发环境搭建不在本示例范围内. 相关篇<[硬件开源电路]STM32G070RBT6开发板> ...

  7. 基于Arduino高温巡逻报警智能小车

    引言 1.1 目的 高温巡逻报警智能小车 学习了解Arduino的工作原理 实战拼接小车内部结构模板 掌握了解高温传感器如何识别环境温度和工作原理 学习了解火焰传感器如何识别火焰的工作原理 掌握了解蓝 ...

  8. 红外测温枪,超进化 -- 智能温度传感器 基于 arduino 的智能测温模块

    红外测温枪,超进化!--智能温度传感器!基于 arduino 的智能测温模块. 前言 硬件选择 代码讲解 通过 SDDC 协议接入 Spirit 1 部分 配置设备信息 数据获取与发送流程 融合!特殊 ...

  9. 【媒体控制器】开源项目学习笔记(基于Arduino Micro开发板)

    ☑️ 首先说明:本项目基于Arduino Micro 开发板开发的,外设只用到了EC11E1534408无定位旋转编码器. 项目来源:[DIY]自制PC外设-媒体控制器,在英国_哔哩哔哩_bilibi ...

最新文章

  1. CVPR 2021|三维视觉相关论文汇总
  2. html怎么让方块自动旋转,如何使用纯CSS实现一个圆环旋转错觉的动画效果(附源码)...
  3. spring的事件机制实战
  4. java什么时候创建进程,Java创建进程
  5. Nature:全球掠夺性期刊已超过15500种
  6. 为linux服务器安装rkhunter工具
  7. Linux内核邮件列表发送和回复格式研究
  8. 2018计算机一级选择题知识题库,计算机二级选择题题库 2018年计算机一级《WPS》选择题练习及答案...
  9. wgs84坐标系拾取工具_Wgs84坐标系转换为gcj02坐标系及bd09坐标系的验证
  10. 计算机电子电路原理图,简单电路图入门-电路原理图入门知识图解
  11. 使用CURL抓取https网页报错的一种解决方法
  12. pyinstaller打包有pandas和numpy库过程中遇到的bug及处理
  13. ZOJ - 3939
  14. 小程序如何隐藏滚动条
  15. 江浦街的汉庭酒店只有雨季
  16. 一步一步学Silverlight 2系列(21):如何在Silverlight中调用JavaScriptjavascript
  17. VBA每日一练(4),补充VBA的基础语句知识,基本控制结构,I/O基础
  18. 共享单车智能管控技术手段探讨
  19. 【cmd】CMD中Pushd和Popd命令的用法
  20. oracle 创建表 as,Oracle创建表(create table as)

热门文章

  1. 华为路由器和交换机的简单命令
  2. 用“找回你”,查找手机号的前身都被注册过些什么……
  3. oracle 数据库关闭监听日志,11G Oracle 关闭监听XML日志产生的方法
  4. 聆听云享M密码,一款云享M1系列的烟油
  5. Foxmail邮件数据如何迁移
  6. Mahout0.9—Hadoop2.20—FPG关联规则算法
  7. 时间同步的几种方式和组合
  8. 坯子库无法一键安装插件没用_坯子插件库:安装与使用
  9. 西安航空学院计算机等级成绩查询,64所院校成绩查询网址
  10. java 基础(异常处理)