标题:
基于arduino的超声波避障和循迹
[打印本页]
作者:
用户21111410
时间:
2021-8-21 19:34
标题:
基于arduino的超声波避障和循迹
前几天搞了个arduino板,就动手做了个arduino避障小车。。下面是源码有需要的自行提取。
#define leftA_PIN 16
#define leftB_PIN 17
#define righA_PIN 18
#define righB_PIN 19
int PIN_1 = 4; //从车头方向的最右边开始排序
int PIN_2 = 5;
int PIN_3 = 6;
int PIN_4 = 7;
void forward( ); //前进
void back( ); //后退
void turnLeftOrigin( ); //原地左
void turnRightOrigin( ); //原地右
void turnRightforword( ); //右前
void turnLeftforword( ); //左前
void turnLeftback( ); //左后
void turnRightback( ); //右后
void _stop(); //停车
void setup()
{
Serial.begin(9600); //串口波特率9600(手机端使用)
pinMode (leftA_PIN, OUTPUT); //设置引脚为输出引脚
pinMode (leftB_PIN, OUTPUT); //设置引脚为输出引脚
pinMode (righA_PIN, OUTPUT); //设置引脚为输出引脚
pinMode (righB_PIN, OUTPUT); //设置引脚为输出引脚
pinMode (PIN_1, INPUT); //设置引脚为输入引脚
pinMode (PIN_2, INPUT); //设置引脚为输入引脚
pinMode (PIN_3, INPUT); //设置引脚为输入引脚
pinMode (PIN_4, INPUT); //设置引脚为输入引脚
}
void loop(){
int data[4];
data[0] = digitalRead(4);
data[1] = digitalRead(5);
data[2] = digitalRead(6);
data[3] = digitalRead(7);
if((data[0]==LOW) && (data[1]==LOW ) && (data[2]==LOW) && (data[2]==LOW) )
{
forward();
}
if(((data[0]==HIGH) && (data[1]==LOW) && (data[2]==LOW) && (data[3]==LOW)) || ((data[0]==HIGH) && (data[1]==HIGH) && (data[2]==LOW) && (data[3]==LOW)) )
{
turnLeftOrigin();
}
if(((data[0]==LOW) && (data[1]==LOW) && (data[2]==HIGH)&& (data[3]==LOW)) || ((data[0]==LOW)&& (data[1]==LOW) && (data[2]==HIGH) && (data[3]==HIGH)) )
{
turnRightOrigin( );
}
}
/**************************************************
forward子函数——前进子函数
函数功能:控制车前进
**************************************************/
void forward( )
{
analogWrite(leftA_PIN,180);
analogWrite(leftB_PIN,0); //左轮前进
analogWrite(righA_PIN,180);
analogWrite(righB_PIN,0); //右轮前进
}
/**************************************************
back子函数——后退子函数
函数功能:控制车后退
**************************************************/
void back( )
{
analogWrite(leftA_PIN,0);
analogWrite(leftB_PIN,180); //左轮后退
analogWrite(righA_PIN,0);
analogWrite(righB_PIN,180); //右轮后退
}
/**************************************************
turnLeftOrigin子函数——原地左转子函数
函数功能:控制车原地左转
**************************************************/
void turnLeftOrigin( )
{
analogWrite(leftA_PIN,0);
analogWrite(leftB_PIN,255); //左轮后退
analogWrite(righA_PIN,255);
analogWrite(righB_PIN,0); //右轮前进
}
/**************************************************
turnRightOrigin子函数——原地右转子函数
函数功能:控制车原地右转
**************************************************/
void turnRightOrigin( )
{
analogWrite(leftA_PIN,255);
analogWrite(leftB_PIN,0); //左轮前进
analogWrite(righA_PIN,0);
analogWrite(righB_PIN,255); //右轮后退
}
/**************************************************
turnRightforword子函数——右前运动子函数
函数功能:控制车右前
**************************************************/
void turnRightforword( )
{
analogWrite(leftA_PIN,150);
analogWrite(leftB_PIN,0); //左轮快前进
analogWrite(righA_PIN,128);
analogWrite(righB_PIN,0); //右轮慢前进
}
/**************************************************
turnLeftforword子函数——左前运动子函数
函数功能:控制车左前
**************************************************/
void turnLeftforword( )
{
analogWrite(leftA_PIN,128);
analogWrite(leftB_PIN,0); //左轮慢前进
analogWrite(righA_PIN,150);
analogWrite(righB_PIN,0); //右轮快前进
}
/**************************************************
turnRightforword子函数——右后运动子函数
函数功能:控制车右原地
**************************************************/
void turnRightback( )
{
analogWrite(leftA_PIN,255);
analogWrite(leftB_PIN,0); //左轮慢前进
analogWrite(righA_PIN,0);
analogWrite(righB_PIN,0); //右轮停止
}
/**************************************************
turnLeftforword子函数——左后运动子函数
函数功能:控制车左原地
**************************************************/
void turnLeftback( )
{
analogWrite(leftA_PIN,0);
analogWrite(leftB_PIN,0); //左轮停止
analogWrite(righA_PIN,255);
analogWrite(righB_PIN,0); //右轮慢前进
}
/**************************************************
stop子函数—停止子函数
函数功能:控制车停止
**************************************************/
void _stop( )
{
analogWrite(leftA_PIN,0);
analogWrite(leftB_PIN,0); //左轮静止不动
analogWrite(righA_PIN,0);
analogWrite(righB_PIN,0); //右轮静止不动
}
复制代码
作者:
用户21111410
时间:
2021-8-21 19:35
第一次写稿没有什么经验希望大家可以提出宝贵意见。
作者:
glinfei
时间:
2021-8-23 10:15
是不是经常出轨啊?而且把四个红外当两个用了,处理不了直角弯啊。
作者:
用户21111410
时间:
2021-8-23 16:24
不会呀,我感觉四个更稳定些。。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1