基于arduino的5路循迹小车(1)

基于arduino的5路循迹小车(1)
初步小车运动

1.硬件选用

1.开发板使用arduino 2560
在这里插入图片描述
2.电机驱动板使用 大功率电机驱动板(PWM由两个端子控制)
在这里插入图片描述
3.电源12V锂电池

4.降压板(需要降压给开发板供电)

5.直流减速电机12V

2.接线

12V电源直接给通过电机驱动板给电机供电
12V电源通过降压板给开发板供电
其余控制电路接线均按代码接线
(注意:12V电源接出的线因电流过大,需要使用漆包线,其余均可用杜邦线)

3.代码


int Left_motor_go1 = 24;        //左电机前进 AIN1
int Left_motor_back1 = 25;      //左电机后退 AIN2

int Right_motor_go1 = 22;       //右电机前进 BIN1
int Right_motor_back1 = 23;     //右电机后退 BIN2

int Left_motor_pwm1 = 3;       //左电机控速 PWMA1
int Right_motor_pwm1= 5;      //右电机控速 PWMB1
int Left_motor_pwm2 = 4;       //左电机控速 PWMA2
int Right_motor_pwm2= 6;      //右电机控速 PWMB2

void setup()
{
  //初始化电机驱动IO口为输出方式
  pinMode(Left_motor_go1, OUTPUT);
  pinMode(Left_motor_back1, OUTPUT);
  pinMode(Right_motor_go1, OUTPUT);
  pinMode(Right_motor_back1, OUTPUT);
}

void run(int left_speed, int right_speed)
{
  //左电机前进
  digitalWrite(Left_motor_go1, LOW);   //左电机前进使能
  digitalWrite(Left_motor_back1, HIGH);  //左电机后退禁止
  analogWrite(Left_motor_pwm1, LOW);
  analogWrite(Left_motor_pwm2, left_speed);
  //右电机前进
  digitalWrite(Right_motor_go1, LOW);  //右电机前进使能
  digitalWrite(Right_motor_back1, HIGH); //右电机后退禁止
  analogWrite(Right_motor_pwm1, LOW);
  analogWrite(Right_motor_pwm2, right_speed);
}

void  left(int left_speed, int right_speed)
{
  //左电机后退
  digitalWrite(Left_motor_go1, HIGH);    //左电机前进禁止
  digitalWrite(Left_motor_back1,LOW);  //左电机后退禁止
  analogWrite(Left_motor_pwm2, left_speed);
  analogWrite(Left_motor_pwm1,LOW);

  //右电机前进
  digitalWrite(Right_motor_go1, LOW);  //右电机前进使能
  digitalWrite(Right_motor_back1, HIGH); //右电机后退禁止
  analogWrite(Right_motor_pwm2, LOW);
  analogWrite(Right_motor_pwm1, right_speed);
}

void right(int left_speed, int right_speed)
{
  //左电机前进
  digitalWrite(Left_motor_go1, LOW);   //左电机前进使能
  digitalWrite(Left_motor_back1, HIGH);  //左电机后退禁止
  analogWrite(Left_motor_pwm2, LOW);
  analogWrite(Left_motor_pwm1, left_speed);

  //右电机后退
  digitalWrite(Right_motor_go1, HIGH );   //右电机前进禁止
  digitalWrite(Right_motor_back1,LOW); //右电机后退禁止
  analogWrite(Right_motor_pwm2, right_speed);
  analogWrite(Right_motor_pwm1, LOW );

}

void back(int left_speed, int right_speed)
{
  //左电机后退
  digitalWrite(Left_motor_go1, HIGH);   //左电机前进禁止
  digitalWrite(Left_motor_back1, LOW);  //左电机后退使能
  analogWrite(Left_motor_pwm1, left_speed);
  analogWrite(Left_motor_pwm2, LOW);
  //右电机后退
  digitalWrite(Right_motor_go1, HIGH);  //右电机前进禁止
  digitalWrite(Right_motor_back1, LOW); //右电机后退使能
  analogWrite(Right_motor_pwm1, right_speed);
  analogWrite(Right_motor_pwm2, LOW);
}

void bank(int left_speed, int right_speed)//惯性停车
{
  //左电机空
  digitalWrite(Left_motor_go1, LOW);   //左电机前进禁止
  digitalWrite(Left_motor_back1, LOW);  //左电机后退禁止
  analogWrite(Left_motor_pwm1, left_speed);
  analogWrite(Left_motor_pwm2, left_speed);

  //右电机空
  digitalWrite(Right_motor_go1, LOW);   //右电机前进禁止
  digitalWrite(Right_motor_back1,LOW); //右电机后退禁止
  analogWrite(Right_motor_pwm1, right_speed);
  analogWrite(Right_motor_pwm2, right_speed);
}
void loop()
{

}

4.测试小车

在loop中输入需要测试的小车运行状态
1.若电机转向相反,请检查接线
2.运行时有剧烈抖动或电机发出较大异响,请使用万用表排查问题

寻迹模块简介: BFD-1000 专门设计用作黑(白)线检测的传感器,特别适合复杂黑白线、交叉黑白线的检测,它有6 高灵敏度的红外传感器(5 巡线、1 蔽障),能够对黑白线准确的识别,它有如下功能和特点: 1.BFD-1000 集成5 循迹传感器,适合复杂黑线(白线)的跟踪,对于简单的黑线(白线)寻取更不在话下。 2.BFD-1000 有一蔽障用的红外传感器,蔽障距离可以通过滑动变阻器调节,方便有蔽障需求的机器人设计。 3.BFD-1000 有一个专门设计的触碰传感器,使得有这方面的需求机器人设计更加简便。 4.BFD-1000 输出信号全部都为数字信号,方便与单片机相连。 5.BFD-1000 全部传感器都有LED 灯作为指示,方便调试 6.BFD-1000 支持电压为3.0-5.5v 满足大多数系统需求。 五寻迹实物展示: 黑(白)线识别五寻迹模块技术参数: 输出形式:数字输出(高低电平),探测到黑线时为输出低电平,探测到白线时输出为高电平。 检测距离(0.5-40mm) 输入电压:3.0-5.5V 尺寸:12.8*3.0 厘米 实物购买链接:https://detail.tmall.com/item.htm?spm=a1z10.3-b.w4... 附件内容截图: 口寻迹例程说明: 1. 简单循迹例程 思想: 简单的循迹只用两个循迹传感器就可以实现,可以用循迹模块上面的SS2,SS3,两个传感器,当SS2 碰到黑线时可以向左转,SS3碰到黑线的时候可以向右转,就可以实现简单的循迹。例程C 代码:见“相关文件”普通循迹程序 2.“T”字交叉口循迹 思想: 寻“T” 字形的交叉线主要的思想是最边上来那两个传感器(SS1 SS5)碰到黑线的时候让小车再走一段时间,再判断最前面那个传感器SS3的状态,如果没有黑线,就说明寻到了"T" 字口。例程C 代码:见“相关文件”“T”字循迹程序 3.“十”字交叉口循迹 思想: 寻“十” 字形的交叉线主要的思想是最边上来那两个传感器(SS1)碰到黑线的时候让小车再走一段时间,再判断最前面那个传感器SS3的状态,如果有黑线,就说明寻到了"十" 字口。例程C 代码:见“相关文件”“十”字循迹程序 4.“7”字交叉口循迹 思想: 寻“7” 字形的交叉线主要的思想是左边上来那个传感器(SS1)碰到黑线的时候让小车再走一段时间,再判断最前面那个传感器SS3的状态,如果没有黑线,就说明寻到了"7" 字口。例程C 代码:见“相关文件”“7”字循迹程序 注意:任何复杂的循迹都可以拆分成简单的循迹来实现,复杂的循迹最重要的是找到交叉点,然后转向,至于转多少,可以用前面的那个传感器做转过黑线数目的计数。
参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页

打赏作者

yanzeze110

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值