arduino麦轮转弯程序_麦克纳姆轮智能小车接线方案
折騰了好幾天,實在搞不定了,決定上來社區求助。
現在的硬件情況是這樣的:
- HM-GM37-3429霍爾傳感器大載重電機,每個電機六條線,其中電機輸入兩個,霍爾編碼器電源兩個,編碼器AB相兩個
- 四個電機,不算電源線的話,每個電機要使用3個Arduino的端口(控制高低電平和PWM)+兩個編碼器AB相數據輸入,共需要20個端口
- Arduino Uno
- L298N四路驅動器
- 12V電池
我遇到的問題是:
1. 不知道怎樣接線才能把電機和霍爾編碼器都用上
2. 考慮過擴展板,但即便用了Nano+擴展板能插上線,Arduino也只有1~13,A1~A7這么多的端口,如何能同時控制電機又可以獲取到四個霍爾編碼器的值?
還有就是目前電機總是時轉時不轉的,折騰了5,6個小時了不清楚原因,還望各位大神可以多支招,已排查以下情況:
- 全部杜邦線已用萬用表測量過是通的
- L298N是正常的,用了兩塊同樣的板子試過還是這樣
- 電機用電池直連測試過是可以轉的
唯一沒有測過的就是Arduino Uno是不是正常的了,但這個不知道有沒有簡便的方法可以測試?
謝謝大家!
以下是我的測試代碼:
[mw_shl_code=arduino,true]/*
* Sample Code for testing car running
*/
//Define the Pins
//Motor 1
int pinAIN1 = 4; //右前馬達
int pinAIN2 = 2; //右前馬達
int pinPWMA = 3; //右前馬達PWM
int pinAIN3 = 7; //左前馬達
int pinAIN4 = 6; //左前馬達
int pinPWMB = 5; //左前馬達PWM
int pinAIN5 = 10; //右后馬達
int pinAIN6 = 8; //右后馬達
int pinPWMC = 9; //右后馬達PWM
int pinAIN7 = 12; //左后馬達
int pinAIN8 = 13; //左后馬達
int pinPWMD = 11; //左后馬達PWM
//Standby
int pinSTBY = 12;
void setup()
{
Serial.begin(9600);
//Set the PIN Modes
pinMode(pinAIN1, OUTPUT);
pinMode(pinAIN2, OUTPUT);
pinMode(pinPWMA, OUTPUT);
pinMode(pinAIN3, OUTPUT);
pinMode(pinAIN4, OUTPUT);
pinMode(pinPWMB, OUTPUT);
pinMode(pinAIN5, OUTPUT);
pinMode(pinAIN6, OUTPUT);
pinMode(pinPWMC, OUTPUT);
pinMode(pinAIN7, OUTPUT);
pinMode(pinAIN8, OUTPUT);
pinMode(pinPWMD, OUTPUT);
pinMode(pinSTBY, OUTPUT);
}
void loop()
{
//12A
Serial.println("前");
int speed = 255;
digitalWrite(pinAIN1, 1);
digitalWrite(pinAIN2, 0);
analogWrite(pinPWMA, speed);
delay(2000);
Serial.println("結束");
analogWrite(pinPWMA, 0);
delay(1000);
Serial.println("后");
digitalWrite(pinAIN1, 0);
digitalWrite(pinAIN2, 1);
analogWrite(pinPWMA, speed);
delay(2000);
Serial.println("結束");
analogWrite(pinPWMA, 0);
delay(1000);
//34B
Serial.println("后");
digitalWrite(pinAIN3, 1);
digitalWrite(pinAIN4, 0);
analogWrite(pinPWMB, speed);
delay(2000);
Serial.println("結束");
analogWrite(pinPWMB, 0);
delay(1000);
Serial.println("前");
digitalWrite(pinAIN3, 0);
digitalWrite(pinAIN4, 1);
analogWrite(pinPWMB, speed);
delay(2000);
Serial.println("結束");
analogWrite(pinPWMB, 0);
delay(1000);
//56C
Serial.println("前");
digitalWrite(pinAIN5, 1);
digitalWrite(pinAIN6, 0);
analogWrite(pinPWMC, speed);
delay(2000);
Serial.println("結束");
analogWrite(pinPWMC, 0);
delay(1000);
Serial.println("后");
digitalWrite(pinAIN5, 0);
digitalWrite(pinAIN6, 1);
analogWrite(pinPWMC, speed);
delay(2000);
Serial.println("結束");
analogWrite(pinPWMC, 0);
delay(1000);
//78D
Serial.println("后");
digitalWrite(pinAIN7, 1);
digitalWrite(pinAIN8, 0);
analogWrite(pinPWMD, speed);
delay(2000);
Serial.println("結束");
analogWrite(pinPWMD, 0);
delay(1000);
Serial.println("前");
digitalWrite(pinAIN7, 0);
digitalWrite(pinAIN8, 1);
analogWrite(pinPWMD, speed);
delay(2000);
Serial.println("結束");
analogWrite(pinPWMD, 0);
delay(1000);
/*
*/
}[/mw_shl_code]
總結
以上是生活随笔為你收集整理的arduino麦轮转弯程序_麦克纳姆轮智能小车接线方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java二叉树合并_Java(树的前中后
- 下一篇: java cxf 不使用springmv