課程目標(biāo)
- 最簡(jiǎn)小車(chē)的設(shè)計(jì)
- 雙電機(jī)控制車(chē)輛運(yùn)動(dòng)
- 小車(chē)的多種運(yùn)動(dòng)形態(tài)實(shí)現(xiàn)
電路搭建
所需材料
ArduinoUNO * 1
L298N驅(qū)動(dòng)模塊 * 1
直流電機(jī) * 2
7~12V外接電源 * 1
杜邦線(xiàn)若干
小車(chē)組件
電路連接
程序編寫(xiě)
練習(xí)一:小車(chē)的循環(huán)運(yùn)動(dòng)
通過(guò)編寫(xiě)程序,循環(huán)實(shí)現(xiàn)小車(chē)的前進(jìn)一秒、后退一秒、左轉(zhuǎn)一秒、右轉(zhuǎn)一秒、停止一秒功能。
圖形化方式:
如果有同學(xué)發(fā)現(xiàn),按照下面的程序上傳后,小車(chē)的運(yùn)動(dòng)有問(wèn)題,那么可以通過(guò)改變直流電機(jī)的接線(xiàn)或者修改數(shù)字輸出引腳的高低電平即可。
代碼方式:
/* 項(xiàng)目名稱(chēng):循環(huán)控制小車(chē)運(yùn)動(dòng)
* 項(xiàng)目時(shí)間:2022.03.28
* 項(xiàng)目作者:MRX
*/
int IN1 = 4; // IN1連接 D4
int IN2 = 5;
int ENA = 9;
int IN3 = 6; // IN3連接D6
int IN4 = 7;
int ENB = 10;
unsigned long delaytime = 1000; //等待時(shí)間
int value = 100; // 模擬輸出的值
//前進(jìn)
void forward() {
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(ENA,value);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(ENB,value);
}
//后退
void back() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,value);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,value);
}
//右轉(zhuǎn)
void right() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,value);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,0);
}
//左轉(zhuǎn)
void left() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,0);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,value);
}
// 停止
void stop() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
analogWrite(ENA,0);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
analogWrite(ENB,0);
}
void setup(){
for (int i = 4;i <= 10;i++){
pinMode(i, OUTPUT);
}
}
void loop(){
forward();
delay(delaytime);
forward();
delay(delaytime);
left();
delay(delaytime);
right();
delay(delaytime);
stop();
delay(delaytime);
}
練習(xí)二:可調(diào)速的小車(chē)
通過(guò)讀取可調(diào)電位器的值,來(lái)實(shí)現(xiàn)車(chē)速的變化。
電路接線(xiàn):
在上圖的基礎(chǔ)上,增加一個(gè)可調(diào)電位器連接到UNO的A0腳。
圖形化方式:
代碼方式:
/* 項(xiàng)目名稱(chēng):電位器控制小車(chē)速度
* 項(xiàng)目時(shí)間:2022.03.28
* 項(xiàng)目作者:MRX
*/
int IN1 = 4; // IN1 connected to pin 4
int IN2 = 5;
int ENA = 9;
int IN3 = 6; // IN3 connected to pin 6
int IN4 = 7;
int ENB = 10;
unsigned long delaytime = 1000; //delay time
int value = 0; // the duty cycle
void forward() {
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(ENA,value);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(ENB,value);
}
void back() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,value);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,value);
}
void right() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,100);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,0);
}
void left() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,0);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,100);
}
void stop() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
analogWrite(ENA,0);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
analogWrite(ENB,0);
}
void setup(){
for (int i = 4;i <= 10;i++){
pinMode(i, OUTPUT);
}
pinMode(A0,INPUT);
}
void loop(){
value = (map(analogRead(A0), 0, 1023, 0, 255));
forward();
}
-
電機(jī)控制
+關(guān)注
關(guān)注
3569文章
1954瀏覽量
271623 -
電位器
+關(guān)注
關(guān)注
14文章
1017瀏覽量
67766 -
直流電機(jī)
+關(guān)注
關(guān)注
36文章
1733瀏覽量
71551 -
輪式機(jī)器人
+關(guān)注
關(guān)注
0文章
7瀏覽量
9061 -
Arduino
+關(guān)注
關(guān)注
189文章
6494瀏覽量
190376
發(fā)布評(píng)論請(qǐng)先 登錄
如何使用MATLB和Arduino控制直流電機(jī)

直流電機(jī)

直流電機(jī)PWM控制
直流電機(jī)PWM控制

Arduino的直流電機(jī)調(diào)速

動(dòng)手玩轉(zhuǎn)Arduino---運(yùn)動(dòng)控制(直流電機(jī)步進(jìn)電機(jī)舵機(jī))

如何使用L298N和Arduino板控制直流電機(jī)

ROS機(jī)器人中直流電機(jī)控制原理與驅(qū)動(dòng)電路設(shè)計(jì)

arduino直流電機(jī)

使用Arduino和電位器控制直流電機(jī)速度

ros與arduino通信控制直流電機(jī)

使用Arduino的直流電機(jī)MOSFET控制速度

使用Arduino來(lái)控制直流電機(jī)

評(píng)論