用Arduino制作红外线循迹自动机器人
功能说明:
让红外线循迹自动机器人能够自动行进在预先规划的黑色轨道上。请按购实际情况调整自动机器人的行进速度,以免车速过快而冲出轨道。般地面负色都不是与黑色轨道对比强烈的白色,会降低红外线的反射率,使低基准电位输出电压过高。可以利用调整比较电压值来提高感应的灵敏度,以免产生误动作。
如果使用三线式红外线模块或四线式红外线模块的DO输出,必须连接到Arduino板的数字输入引脚,并且调整红外线模块上的可变电阻改变比较器电压,以提高红外线循迹自动机器人对轨道的感应灵敏度。如果使用四线式红外线模块的AO输出,必须连接Arduino板的模拟输入引脚,并且调整analogRead0)函数所读取转换的比较值,以提高红外线循迹自动机器人对轨道的感应灵敏度。
const int negR=4;//右轮马达负极
const int posR=5;//右轮马达正极
const int negL=6;//左轮马达负极
const int posL=7;//左轮马达正极
const int pwmR=9;//右轮马达转速控制
const int pwmL=10;//左轮马达转速控制
const int irD1=A1;//左红外 --两个红外间距最好在1.5-2cm
const int irD2=A2;//中
const int irD3=A3;//右
const int Rspeed=200;//转速初值
const int Lspeed=200;
byte IRstatus=0;//红外线循迹模块感应值
void setup()
{ pinMode(posR,OUTPUT);pinMode(negR,OUTPUT);pinMode(posL,OUTPUT);pinMode(negL,OUTPUT); pinMode(irD1,INPUT_PULLUP); //设置模拟引脚A1为含提升电阻的输入引脚pinMode(irD2,INPUT_PULLUP);pinMode(irD3,INPUT_PULLUP);
}
void loop()
{int val; //输入模拟信号值IRstatus=0; //清除红外线循迹模块感应值val=analogRead(irD1);//读取“左L”红外线循迹模块感应值if(val>=150)//感应到黑色轨道?IRstatus=(IRstatus+4); //设置感应值位2为1val=analogRead(irD2);//读取中if(val>=150)//感应到黑色轨道?IRstatus=(IRstatus+2); //设置感应值位1为1val=analogRead(irD3); //读取右if(val>=150)//感应到黑色轨道?IRstatus=(IRstatus+1); //设置感应值位0为1driveMotor(IRstatus); //按IRstatus值设置马达转向及转速
}
//马达转向控制函数
void driveMotor(byte IRstatus)
{switch(IRstatus){case 0: //LCR=000,白白白forward(Rspeed,Lspeed);break;case 1://001,白白黑right(1,Rspeed,Lspeed);break;case 2:forward(Rspeed,Lspeed);break;case 3:right(0,Rspeed,Lspeed);break;case 4:left(1,Rspeed,Lspeed);break;case 5:pause(0,0);break;case 6:left(0,Rspeed,Lspeed);break;case 7:pause(0,0);break; }
}
//前进
void forward(byte RmotorSpeed, byte LmotorSpeed)
{analogWrite(pwmR,RmotorSpeed);analogWrite(pwmL,LmotorSpeed);digitalWrite(posR,HIGH);digitalWrite(negR,LOW); digitalWrite(posL,LOW);digitalWrite(negL,HIGH);
}
//后退
void back(byte RmotorSpeed, byte LmotorSpeed)
{analogWrite(pwmR,RmotorSpeed);analogWrite(pwmL,LmotorSpeed);digitalWrite(posR,LOW);digitalWrite(negR,HIGH); digitalWrite(posL,HIGH);digitalWrite(negL,LOW);
}
//停止
void pause(byte RmotorSpeed, byte LmotorSpeed)
{analogWrite(pwmR,RmotorSpeed);analogWrite(pwmL,LmotorSpeed);digitalWrite(posR,LOW);digitalWrite(negR,LOW); digitalWrite(posL,LOW);digitalWrite(negL,LOW);
}
//右转
void right(byte flag, byte RmotorSpeed, byte LmotorSpeed)
{analogWrite(pwmR,RmotorSpeed);analogWrite(pwmL,LmotorSpeed);if(flag==1) //fast{digitalWrite(posR,LOW);digitalWrite(negR,HIGH); digitalWrite(posL,LOW);digitalWrite(negL,HIGH); } else //slow{digitalWrite(posR,LOW);digitalWrite(negR,LOW); digitalWrite(posL,LOW);digitalWrite(negL,HIGH); }
}
左转
void left(byte flag, byte RmotorSpeed, byte LmotorSpeed)
{analogWrite(pwmR,RmotorSpeed);analogWrite(pwmL,LmotorSpeed);if(flag==1) //fast{digitalWrite(posR,HIGH);digitalWrite(negR,LOW); digitalWrite(posL,HIGH);digitalWrite(negL,LOW); } else //slow{digitalWrite(posR,HIGH);digitalWrite(negR,LOW); digitalWrite(posL,LOW);digitalWrite(negL,LOW); }
}
用Arduino制作红外线循迹自动机器人相关推荐
- 水下自动循迹机器人_全自动循迹灭火机器人的设计
龙源期刊网 http://www.qikan.com.cn 全自动循迹灭火机器人的设计 作者:张仁尊 来源:<山东工业技术> 2017 年第 08 期 摘 要:本系统以 stm32F103 ...
- 【C51开发应用】基于C51单片机开发的循迹灭火机器人
基于C51单片机开发的循迹灭火机器人 一.作品摘要 二.系统设计步骤 三.方案设计 3.1 小车主体设计 3.1.1 购买玩具小车进行改装 3.1.2 自己设计小车主体结构 3.2 电 ...
- Arduino智能小车——循迹篇
Arduino智能小车--循迹篇 Arduino智能小车系列教程时空门: Arduino智能小车--拼装篇 点击跳转 Arduino智能小车--测试篇 点击跳转 Arduino智能小车--调速篇 点击 ...
- 用米思齐(mixly)或者Arduino制作红外线遥控灯
----用米思齐(mixly)或者Arduino制作红外线遥控灯 一.先设置红外线遥控和LED灯的端口 二.在面包板上把LED灯的电路接好,注意要接电阻! 三.Arduino代码 #include & ...
- 单片机原理及应用——Arduino四驱四路循迹小车
摸摸鱼,把大二的课堂作业总结一下发出来,很基础的小白代码,希望能给入门的同学一点参考. 由于实物卖掉啦,只能尽量用文字配上接线图等,写详细一点. 一.元器件清单 Arduino UNO R3开发板(带 ...
- 水下自动循迹机器人_自动循迹测距机器人
系统设计总结报告 一.项目中遇到的问题及解决过程 1.项目器件选购: 由于该项目结构相对复杂.涉及的器件较多.制作时间较长,我们共分三次进行器件采购.早期我们通过与高年级同学交流,了解了一些硬件知识, ...
- 单目视觉机器人的循迹_机器人视觉系统传感器的关键技术盘点
导读:机器人视觉系统,是指用计算机来实现人的视觉功能,也就是用计算机来实现对客观的三维世界的识别.人类接收的信息70%以上来自视觉,人类视觉为人类提供了关于周围环境最详细可靠的信息. 资料图 机器人要 ...
- 中鸣循迹机器人_自动循迹机器人控制系统的设计
马家庆,于兆勤,刘建群,黄惠敬,陈炜楠 摘要:循迹机器人是智能机器人领域内非常重要且被广泛研究的一种智能移动装置,国内许多重要的比赛都以循迹机器人为核心进行开展的.本文设计的智能循迹避障机器人的控制系 ...
- python机器人编程——差速AGV机器、基于视觉和预测控制的循迹、自动行驶(上篇)
目录 一.前言 二.视觉自动循迹的算法流程 (1)图像的获取 (2)图像的预处理 (3)目标轨迹的提取 (4)根据已知曲线进行预测控制 三.核心模块及要点 轨迹图像细化 小车轮距L的测量 预测轨迹变换 ...
最新文章
- Linux视频教程系列汇总
- www.pythonchanlleges.com
- WIN10+MinGW中文输出乱码的解决方法
- DOM-10 面向对象开发Todolist
- 【计算机组成原理】指令系统
- Linux下select函数的使用
- 06-10 Jenkins 配置 allure 报告
- c编程连接mysql
- C#高编 - 委托、Lambda表达式和事件
- 大专计算机办公应用,计算机办公软件应用论文
- 【图像检测-缺陷检测】基于计算机视觉实现液晶显示器表面缺陷检测含Matlab源码
- Linux创建shell脚本文件
- 基于SSM的餐厅点餐系统设计与实现(Java+MySQL)
- 微信开发中两种access_token的区别
- 关于函数凹凸性两种定义与二阶导数符号之间的联系证明
- html5测网速,ajax测网速(示例代码)
- 2023电工杯数学建模A题思路
- 计算机中级职称能转评讲师,职称评审中的转评问题
- UE4 移动端最小包
- 计算机视觉领域摄像头布置,几种深度摄像头简介 | 增强视觉 | 计算机视觉 增强现实...
热门文章
- error LNK1120: 2个无法解析的外部命令:vtkRenderingOpenGL_AutoInit(Construct、Destruct),该函数在......中被引用
- 详细的计算机存储层次结构图,必知必会-存储器层次结构
- 新闻发布系统之浅谈分页技术
- 线性变换及其对应的矩阵
- Java implements和extends的区别
- java 指定垃g1圾收集_【译】Java 14 Hotspot 虚拟机垃圾回收调优指南
- 首次授权中国区独立维修商,高冷的苹果也为“五斗米“折腰?
- Charles ios无法下载证书- chls.pro/ssl一直加载治标办法
- 群发短信 发短信(带图片)
- 计算机数据库管理技术论文的结论,计算机数据库论文范文.doc