智能小車開發實作(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(80, 80);
delay(1000);
stop(0, 0);
delay(1000);
forward(80, 80);
delay(1000);
stop(0, 0);
delay(1000);
right(100, 70);
delay(1000);
stop(0, 0);
delay(1000);
left(70, 100);
delay(1000);
stop(0, 0);
delay(1000);
}
留言
張貼留言