智能小車開發實作(1)-功能調試-前進,後退,左轉,右轉調試

 智能小車開發實作功能調試-前進,後退,左轉,右轉調試

前言

玩arduino一段時間了,覺得真的很方便,好像想的到的都能做
腦中不停的想像出idea,列了一堆清單,有的已實現,有的還
沒著落。不過最想做的就是智能小車系統,我個人覺得智能小
車可以含概的範圍非常廣,有點像是把零碎的功能集合於一身
,例如:動力驅動系統,影像辨識系統,感知系統等等....。
這幾天小車的零件剛到,就趁此一樣樣實踐出來。

材料

小車套件
Arduino uno
L298p馬達擴展版
18650電池2顆 #建議使用,如用普通aaa乾電池,有時會驅動不了馬達

第一階段

組裝小車套件

可以參考以下的影片

認識L298P擴展版

這塊版有點意思,廠商已經定意好一些參數,簡化了一些繁鎖的部份
拿到板子時可以先用廠商附的程式碼測試一下。


主要參數:
1.邏輯部分輸入電壓VDD:5V
2.驅動部分輸入電壓VS:VIN輸入6.5〜12V,PWRIN輸入4.8〜35V #建議使用18650串聯電池
3.邏輯部分工作電流Iss:<36mA
4.驅動部分工作電流Io:<2A
5.最大耗散功率:25W(T = 75℃)
6.控制信號輸入允許:高靈敏度2.3V <Vin <5V,瞬態-0.3V <Vin <1.5V
7.工作溫度:-25 + 130℃
8.硬件接口:5.0mm間距接線柱
9.帶固定扣,並可以通過排針接入控制信號
10.驅動形式:雙路大功率H橋驅動
11.初始佔用:D4〜D7直接驅動電
12.支持PWM / PLL模式電機速度控制
13.尺寸:68 * 53mm

廠商附的程式碼如下:

int E1 = 10; // PWM1
int M1 = 12; // MOTO1
int E2 =11; // PWM2
int M2 = 13; // MOTO1
void setup(){
pinMode(M1, OUTPUT);
pinMode(M2, OUTPUT);
}
void loop(){
int value;
for(value = 0 ; value <= 255; value+=5)//两路电机正转
{
digitalWrite(M1,HIGH);
digitalWrite(M2, HIGH);
analogWrite(E1, value);//PWM 调速
analogWrite(E2, value);//PWM 调速
delay(30);
}
delay(1000);}
int value;
for(value = 0 ; value <= 255; value+=5)// 两路电机反转
{
digitalWrite(M1,LOW);
digitalWrite(M2, LOW);
analogWrite(E1, value);//PWM 调速
analogWrite(E2, value);//PWM 调速
delay(30);
}
delay(1000);}
}


編寫我自己要的動作組

因為我想要先做藍芽控制小車,所以有必要寫前,後,左,右的控制

稍微修改一下原來廠商的範例:
int E1 = 10; //pwm
int M1 = 12;
int E2 = 11; //pwm
int M2 = 13;
//R_speed & L_speed  0~255
void forward(byte R_SPEED, byte L_SPEED)
{
  analogWrite(E1, R_SPEED);
  analogWrite(E2, L_SPEED);
  digitalWrite(M1, HIGH);
  digitalWrite(M2, HIGH);
  delay(50);
}

void back(byte R_SPEED, byte L_SPEED)
{
  analogWrite(E1, R_SPEED);
  analogWrite(E2, L_SPEED);
  digitalWrite(M1, LOW);
  digitalWrite(M2, LOW);
  delay(50);
}

void right(byte R_SPEED, byte L_SPEED){
  analogWrite(E1, R_SPEED);
  analogWrite(E2, L_SPEED);
  digitalWrite(M1, HIGH);
  digitalWrite(M2, LOW);
  delay(50);
}

void left(byte R_SPEED, byte L_SPEED){
  analogWrite(E1, R_SPEED);
  analogWrite(E2, L_SPEED);
  digitalWrite(M1, LOW);
  digitalWrite(M2, HIGH);
  delay(50);
}

void stop(byte R_SPEED, byte L_SPEED)
{
  analogWrite(E1, R_SPEED);
  analogWrite(E2, L_SPEED);
  digitalWrite(M1, HIGH);
  digitalWrite(M2, HIGH);
  // delay(50);
}

void setup()
{
  pinMode(M1, OUTPUT);
  pinMode(M2, OUTPUT);
}

void loop()
{
  back(8080);
  delay(1000);
  stop(00);
  delay(1000);

  forward(8080);
  delay(1000);
  stop(00);
  delay(1000);

  right(10070);
  delay(1000);
  stop(00);
  delay(1000);

  left(70100);
  delay(1000);
  stop(00);
  delay(1000);
}






留言

這個網誌中的熱門文章

平衡小車(balance-Robot)-基本平衡-Arduino