標(biāo)題:
基于arduino的超聲波避障和循跡
[打印本頁]
作者:
用戶21111410
時間:
2021-8-21 19:34
標(biāo)題:
基于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( ); //前進(jìn)
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); //設(shè)置引腳為輸出引腳
pinMode (leftB_PIN, OUTPUT); //設(shè)置引腳為輸出引腳
pinMode (righA_PIN, OUTPUT); //設(shè)置引腳為輸出引腳
pinMode (righB_PIN, OUTPUT); //設(shè)置引腳為輸出引腳
pinMode (PIN_1, INPUT); //設(shè)置引腳為輸入引腳
pinMode (PIN_2, INPUT); //設(shè)置引腳為輸入引腳
pinMode (PIN_3, INPUT); //設(shè)置引腳為輸入引腳
pinMode (PIN_4, INPUT); //設(shè)置引腳為輸入引腳
}
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子函數(shù)——前進(jìn)子函數(shù)
函數(shù)功能:控制車前進(jìn)
**************************************************/
void forward( )
{
analogWrite(leftA_PIN,180);
analogWrite(leftB_PIN,0); //左輪前進(jìn)
analogWrite(righA_PIN,180);
analogWrite(righB_PIN,0); //右輪前進(jìn)
}
/**************************************************
back子函數(shù)——后退子函數(shù)
函數(shù)功能:控制車后退
**************************************************/
void back( )
{
analogWrite(leftA_PIN,0);
analogWrite(leftB_PIN,180); //左輪后退
analogWrite(righA_PIN,0);
analogWrite(righB_PIN,180); //右輪后退
}
/**************************************************
turnLeftOrigin子函數(shù)——原地左轉(zhuǎn)子函數(shù)
函數(shù)功能:控制車原地左轉(zhuǎn)
**************************************************/
void turnLeftOrigin( )
{
analogWrite(leftA_PIN,0);
analogWrite(leftB_PIN,255); //左輪后退
analogWrite(righA_PIN,255);
analogWrite(righB_PIN,0); //右輪前進(jìn)
}
/**************************************************
turnRightOrigin子函數(shù)——原地右轉(zhuǎn)子函數(shù)
函數(shù)功能:控制車原地右轉(zhuǎn)
**************************************************/
void turnRightOrigin( )
{
analogWrite(leftA_PIN,255);
analogWrite(leftB_PIN,0); //左輪前進(jìn)
analogWrite(righA_PIN,0);
analogWrite(righB_PIN,255); //右輪后退
}
/**************************************************
turnRightforword子函數(shù)——右前運動子函數(shù)
函數(shù)功能:控制車右前
**************************************************/
void turnRightforword( )
{
analogWrite(leftA_PIN,150);
analogWrite(leftB_PIN,0); //左輪快前進(jìn)
analogWrite(righA_PIN,128);
analogWrite(righB_PIN,0); //右輪慢前進(jìn)
}
/**************************************************
turnLeftforword子函數(shù)——左前運動子函數(shù)
函數(shù)功能:控制車左前
**************************************************/
void turnLeftforword( )
{
analogWrite(leftA_PIN,128);
analogWrite(leftB_PIN,0); //左輪慢前進(jìn)
analogWrite(righA_PIN,150);
analogWrite(righB_PIN,0); //右輪快前進(jìn)
}
/**************************************************
turnRightforword子函數(shù)——右后運動子函數(shù)
函數(shù)功能:控制車右原地
**************************************************/
void turnRightback( )
{
analogWrite(leftA_PIN,255);
analogWrite(leftB_PIN,0); //左輪慢前進(jìn)
analogWrite(righA_PIN,0);
analogWrite(righB_PIN,0); //右輪停止
}
/**************************************************
turnLeftforword子函數(shù)——左后運動子函數(shù)
函數(shù)功能:控制車左原地
**************************************************/
void turnLeftback( )
{
analogWrite(leftA_PIN,0);
analogWrite(leftB_PIN,0); //左輪停止
analogWrite(righA_PIN,255);
analogWrite(righB_PIN,0); //右輪慢前進(jìn)
}
/**************************************************
stop子函數(shù)—停止子函數(shù)
函數(shù)功能:控制車停止
**************************************************/
void _stop( )
{
analogWrite(leftA_PIN,0);
analogWrite(leftB_PIN,0); //左輪靜止不動
analogWrite(righA_PIN,0);
analogWrite(righB_PIN,0); //右輪靜止不動
}
復(fù)制代碼
作者:
用戶21111410
時間:
2021-8-21 19:35
第一次寫稿沒有什么經(jīng)驗希望大家可以提出寶貴意見。
作者:
glinfei
時間:
2021-8-23 10:15
是不是經(jīng)常出軌?而且把四個紅外當(dāng)兩個用了,處理不了直角彎啊。
作者:
用戶21111410
時間:
2021-8-23 16:24
不會呀,我感覺四個更穩(wěn)定些。。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1