一、本次實(shí)驗(yàn)所需器材
1、Arduino UNO板
2、藍(lán)牙模塊
3、藍(lán)牙小車底盤(可從淘寶網(wǎng)購(gòu)買)
4、L298驅(qū)動(dòng)模塊:1個(gè)
3、面包板:1個(gè)
二、藍(lán)牙模塊的使用
實(shí)驗(yàn):給藍(lán)牙模塊發(fā)送h,回復(fù)i am here;發(fā)送b,回復(fù)see you.
硬件連接:
代碼:
char getstr;
void setup()
{
Serial.begin(9600);
}
void loop()
{
getstr=Serial.read();
if(getstr==‘h’)
{
Serial.println(“I am here!”);
}
else if(getstr==‘b’){
Serial.println(“See you!”);
}
}
將以上代碼寫入arduino時(shí),要注意先將藍(lán)牙斷開,寫入完成后,再連上藍(lán)牙,否則會(huì)出錯(cuò)。
手機(jī)端下載一個(gè)bluetooth spp或者藍(lán)牙串口程序即可,這里我用的是。
然后通過(guò)手機(jī)與該藍(lán)牙模塊進(jìn)行連接,一般默認(rèn)連接碼是1234或者0000。連接后,發(fā)送h,會(huì)顯示I am here,發(fā)送b,會(huì)顯示See you!
三、藍(lán)牙遙控小車制作
1、從網(wǎng)上購(gòu)買了藍(lán)牙小車底盤,組裝后如下圖:
2、L298驅(qū)動(dòng)模塊
該模塊的IN1、IN2、IN3、IN4分別連接arduino的12、11、10、9接口,電源12V口接arduino的5V,GND接地。
例子:
char getstr;
int in1=12;
int in2=11;
int in3=10;
int in4=9;
//上面定義了板上的4個(gè)控制端,12一組,34一組
void _mRight(int pin1,int pin2)//當(dāng)in1和in2中有一個(gè)接高位時(shí),電機(jī)會(huì)向某一方向轉(zhuǎn)動(dòng)
{
digitalWrite(pin1,HIGH);
digitalWrite(pin2,LOW);
}
void _mLeft(int pin1,int pin2)//同上
{
digitalWrite(pin1,LOW);
digitalWrite(pin2,HIGH);
}
void _mStop(int pin1,int pin2)//緊急制動(dòng),實(shí)際就是將電機(jī)兩個(gè)端短接了
{
digitalWrite(pin1,HIGH);
digitalWrite(pin2,HIGH);
}
void setup()
{
Serial.begin(9600);
pinMode(in1,OUTPUT);
pinMode(in2,OUTPUT);
pinMode(in3,OUTPUT);
pinMode(in4,OUTPUT);
//下面程序開始時(shí)讓控制端都為高電平,電機(jī)保持不動(dòng)。
digitalWrite(in1,HIGH);
digitalWrite(in2,HIGH);
digitalWrite(in3,HIGH);
digitalWrite(in4,HIGH);
}
void loop()
{
getstr=Serial.read();
if(getstr==‘f’)
{
Serial.println(“go forward!”);
_mStop(in1,in2);
_mStop(in3,in4);
_mRight(in1,in2);
_mRight(in3,in4);
}
else if(getstr==‘b’){
Serial.println(“go back!”);
_mStop(in1,in2);
_mStop(in3,in4);
_mLeft(in1,in2);
_mLeft(in3,in4);
}
else if(getstr==‘l’){
Serial.println(“go left!”);
_mStop(in1,in2);
_mStop(in3,in4);
_mRight(in1,in2);
_mLeft(in3,in4);
}
else if(getstr==‘r’){
Serial.println(“go right!”);
_mStop(in1,in2);
_mStop(in3,in4);
_mRight(in3,in4);
_mLeft(in1,in2);
}
else if(getstr==‘s’){
Serial.println(“Stop!”);
_mStop(in1,in2);
_mStop(in3,in4);
}
}
注意,當(dāng)輸入fl 時(shí),無(wú)論前往、后退、左轉(zhuǎn)、右轉(zhuǎn),電機(jī)都是先停一下,再轉(zhuǎn),這樣電機(jī)都流暢。
3、藍(lán)牙模塊
接法與二中藍(lán)牙模塊的使用接法相同。
4、超聲波測(cè)距模塊
連接方法是將VCC接5V,GND接地,trig接5口,Echo接6口。
5、硬件連接圖
6、代碼
char getstr;
int in1=12;
int in2=11;
int in3=10;
int in4=9;
//上面定義了板上的4個(gè)控制端,12一組,34一組
int TrigPin = 5;
int EchoPin = 6;
float cm;
int i=0;//記錄測(cè)量次數(shù),每5次取一下平均值
float cmsum;//計(jì)算5次總值
float cmeve;//計(jì)算5次平均值
void _mRun(int pin1,int pin2)//電機(jī)右轉(zhuǎn),電機(jī)到底是右轉(zhuǎn)還是左轉(zhuǎn)取決于電機(jī)端的接線和控制腳的順序
{
digitalWrite(pin1,HIGH);
digitalWrite(pin2,LOW);
}
void _mBack(int pin1,int pin2)//同上
{
digitalWrite(pin1,LOW);
digitalWrite(pin2,HIGH);
}
void _mStop(int pin1,int pin2)//緊急制動(dòng),實(shí)際就是將電機(jī)兩個(gè)端短接了
{
digitalWrite(pin1,HIGH);
digitalWrite(pin2,HIGH);
}
void setup()
{
Serial.begin(9600);
pinMode(in1,OUTPUT);
pinMode(in2,OUTPUT);
pinMode(in3,OUTPUT);
pinMode(in4,OUTPUT);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
//下面程序開始時(shí)讓控制端都為高電平,電機(jī)保持不動(dòng)。
digitalWrite(in1,HIGH);
digitalWrite(in2,HIGH);
digitalWrite(in3,HIGH);
digitalWrite(in4,HIGH);
}
void loop()
{
getstr=Serial.read();
delayMicroseconds(60);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(60);
digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH) / 58.0; //將回波時(shí)間換算成cm
cm = (int(cm * 100.0)) / 100.0; //保留兩位小數(shù)
if (i==5){//連接測(cè)5次,計(jì)算平均值,如果小于10厘米則緊急停車
i=0;
cmeve=cmsum/5;
cmsum=0;
if (cmeve《10 and cmeve》0) {
Serial.println(cmeve);
_mStop(in1,in2);
_mStop(in3,in4);
}
}
else {
i=i+1;
cmsum=cmsum+cm;
}
if(getstr==‘f’)
{
Serial.println(“go forward!”);
_mStop(in1,in2);
_mStop(in3,in4);
_mRun(in1,in2);
_mRun(in3,in4);
}
else if(getstr==‘b’){
Serial.println(“go back!”);
_mStop(in1,in2);
_mStop(in3,in4);
_mBack(in1,in2);
_mBack(in3,in4);
}
else if(getstr==‘l’){
Serial.println(“go left!”);
_mStop(in1,in2);
_mStop(in3,in4);
_mRun(in1,in2);
_mBack(in3,in4);
}
else if(getstr==‘r’){
Serial.println(“go left!”);
_mStop(in1,in2);
_mStop(in3,in4);
_mRun(in3,in4);
_mBack(in1,in2);
}
else if(getstr==‘s’){
Serial.println(“Stop!”);
_mStop(in1,in2);
_mStop(in3,in4);
}
}
-
藍(lán)牙模塊
+關(guān)注
關(guān)注
30文章
577瀏覽量
55799
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論