基于Arduino UNO的循迹小车

news/2024/11/16 8:40:09/

目录

1.analogWrite函数的使用

2.红外循迹模块介绍

3.循迹小车代码实现

4.实物示例

1.analogWrite函数的使用

用analogWrite来替换digitalWrite

说明

将一个模拟数值写进Arduino引脚。这个操作可以用来控制LED的亮度, 或者控制电机的转速.

在Arduino UNO控制器中, analogWrite()函数支持以下引脚: 3, 5, 6, 9, 10, 11 在调用analogWrite()函数前,您无需使用pinMode()函数来设置该引脚。

语法

analogWrite(pin, value)

参数

pin :被读取的模拟引脚号码

value :0到255之间的PWM频率值, 0对应off, 255对应on

小车接线情况说明(具体看个人)

2,3控左电机,4,5控右电机

代码示例:

//小车前进的代码是:
void qianJin() {
// 小车前进的功能
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
}
//如果我们只对前进,左转,右转控制速度
//由于硬件特性:Arduino UNO的3,5口支持analogWrite函数,2,4口不支持
//所以,我希望前进的代码是
void qianJin() {
// 小车前进的功能
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
}
//此时,把接口4,5的杜邦线对调
//为了速度控制可以优化代码成
void qianJin() {
// 小车前进的功能
digitalWrite(2, LOW);
analogWrite(3, 120);
digitalWrite(4, HIGH);
analogWrite(5, 120);//120是
}

控制前进速度的代码:

/*
把IO口4和IO口5的接线对调!
前进代码左轮3是模拟输出,5是模拟输出,2和4口不支持,直接给低电平
3口和5口支持模拟输出,达到小车前进方向上的速度控制目的。
*/
void carInit()
{
// put your setup code here, to run once:
pinMode(2, OUTPUT); // 配置2口为输出引脚
pinMode(3, OUTPUT); // 配置3口为输出引脚
//右轮信号方向初始化
pinMode(4, OUTPUT); // 配置4口为输出引脚
pinMode(5, OUTPUT); // 配置5口为输出引脚
}
void qianJin() {
// 小车前进的功能
digitalWrite(2, LOW);
analogWrite(3, 230);
digitalWrite(4, LOW);
analogWrite(5, 230);
}
void setup() {
// put your setup code here, to run once:
carInit();
}
void loop() {
// put your main code here, to run repeatedly:
qianJin();
}

控制前进左转右转:

void carInit()
{
// put your setup code here, to run once:
pinMode(2, OUTPUT); // 配置2口为输出引脚
pinMode(3, OUTPUT); // 配置3口为输出引脚
//右轮信号方向初始化
pinMode(4, OUTPUT); // 配置4口为输出引脚
pinMode(5, OUTPUT); // 配置5口为输出引脚
}
void qianJin() {
// 小车前进的功能
digitalWrite(2, LOW);
analogWrite(3, 150);
digitalWrite(4, LOW);
analogWrite(5, 150);
}
void zuoZhuan() {
// 小车左转,左边电机速度慢,右边电机速度快
digitalWrite(2, LOW);
analogWrite(3, 90); //左
digitalWrite(4, LOW);
analogWrite(5, 250);//右
}
void youZhuan() {
// 小车左转,左边电机速度慢,右边电机速度快
digitalWrite(2, LOW);
analogWrite(3, 250); //左
digitalWrite(4, LOW);
analogWrite(5, 90);//右
}
void setup() {
// put your setup code here, to run once:
carInit();
}
void loop() {
// put your main code here, to run repeatedly:
youZhuan();
}

2.红外循迹模块介绍

我这里用的是红外循迹模块TCRT5000

简单概括:没反射回来,D0输出高电平,灭灯

(1)什么情况下红外线没有返回来

         红外照射在黑线上

         在黑线上DO电平表现为高电平!

         灯的表现为灭灯

(2)什么时候该左转

         说明小车偏右,说明左循迹模块在黑线上,左循迹模块的电平表现为高电平

         右循迹模块能接收到红外,电平表现为低电平

(3)什么实时该右转

         说明小车偏左,右循迹在黑线上,右循迹高电平,左循迹低电平

3.循迹小车代码实现

/*
做循迹模块接Arduino的11口,右循迹模块接Arduinod的12口
小车控制速度前进
*/
int leftX = 11;
int rightX = 12;
void carInit()
{
// put your setup code here, to run once:
pinMode(2, OUTPUT); // 配置2口为输出引脚
pinMode(3, OUTPUT); // 配置3口为输出引脚
//右轮信号方向初始化
pinMode(4, OUTPUT); // 配置4口为输出引脚
pinMode(5, OUTPUT); // 配置5口为输出引脚
}
void qianJin() {
// 小车前进的功能
digitalWrite(2, LOW);
analogWrite(3, 100);
digitalWrite(4, LOW);
analogWrite(5, 100);
}
void ting() {
// 小车前进的功能
digitalWrite(2, LOW);
analogWrite(3, 0);
digitalWrite(4, LOW);
analogWrite(5, 0);
}
void zuoZhuan() {
// 小车左转,左边电机速度慢,右边电机速度快
digitalWrite(2, LOW);
analogWrite(3, 80); //左
digitalWrite(4, LOW);
analogWrite(5, 250);//右
}
void youZhuan() {
// 小车左转,左边电机速度慢,右边电机速度快
digitalWrite(2, LOW);
analogWrite(3, 250); //左
digitalWrite(4, LOW);
analogWrite(5, 80);//右
}
void setup() {
// put your setup code here, to run once:
carInit();
pinMode(leftX,INPUT);
pinMode(rightX,INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
//什么时候该左转
//左循迹模块的电平表现为高电平,右循迹模块表现为低电平
if( digitalRead(leftX) == 1 && digitalRead(rightX) == 0 ){
zuoZhuan();
}
//什么时候右转
//右循迹高电平,左循迹低电平
if( digitalRead(leftX) == 0 && digitalRead(rightX) == 1 ){
youZhuan();
}
//什么时候前进
//左右都为低电平
if( digitalRead(leftX) == 0 && digitalRead(rightX) == 0 ){
qianJin();
}
//什么时候停
//左右都为高电平
if( digitalRead(leftX) == 1 && digitalRead(rightX) == 1 ){
ting();
}
}

4.实物示例


http://www.ppmy.cn/news/590920.html

相关文章

【人工智能】推荐系统

推荐系统是什么? 推荐系统是用于海量数据信息过载情况下,为用户主动快速从海量数据中推荐出符合用户需求,符合永华特点的物品/人/视频/音乐等等 推荐系统的三个参与方: 1、用户 2、物品(商家/店家) 3、提…

android 手机推荐,2018年安卓机皇推荐,这几款是真的不错

原标题:2018年安卓机皇推荐,这几款是真的不错 不知不觉,2018年悄然过去大半,今年的手机市场发展情况可以用日新月异来描述了。回看前半年,安卓手机市场风起云涌,不断涌现出口碑和质量俱佳新产品。 OPPOR15,…

2022双十一买什么好?行家推荐四大最值得入手的数码好物

又到了一年一度的“双棍节”,在这种节点,一般都会迎来一批物品的历史最低价。那么,在今年的双十一买什么比较好呢?下面,我来总结四款行家都在推荐的最值得入手的数码好物,感兴趣的朋友一起来看看吧。 一、…

双十一有哪些数码产品值得买、这几款高性价比好物超值

对于中国的消费者来说,一年一度的双十一购物狂欢节一定是不能错过的。为了促销产品,双十一期间无论是生活用品还是数码产品,都会有大额优惠。尤其是数码产品,从近几年的情况来看,双十一期间会有数百元乃至上千元的优惠…

【Leetcode】15.三数之和

一、题目 1、题目描述 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例1:…

智能推荐系统简单介绍

推荐系统的基本概念什么是推荐系统在信息过载的时代,推荐系统的任务就是联系用户和信息,帮助用户发现对自己有价值的信息,同时让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢。 推荐系统的运用领域有:电影和视屏推荐、个性化音乐推荐、图书…

华为v8原生态android,安卓原生系统的手机有哪些_2019安卓原生系统手机推荐_飞翔教程...

安卓原生系统的手机有哪些?现时代智能机已经代替了以前的功能机了,伴随着各种智能机系统的崛起,比如华为的EMUI,小米手机的MIUI系统等等,接下来52z飞翔小编给大家带来2019安卓原生系统手机推荐,希望大家喜欢…

颜值与实力担当!极具性价比智能手机大推荐

这是个看脸的时代,同样手机的外观也是众多用户所关注的要点,不仅要拿出去有面子,还要用起来流畅自如。有人说好看的东西总是外华内腐,虚有其表,接下来小编为大家推荐的这四款机型,不仅高颜值,实力也不容小觑…