課程目標
- 最簡小車的設計
- 雙電機控制車輛運動
- 小車的多種運動形態實現
電路搭建
所需材料
ArduinoUNO * 1
L298N驅動模塊 * 1
直流電機 * 2
7~12V外接電源 * 1
杜邦線若干
小車組件
電路連接
程序編寫
練習一:小車的循環運動
通過編寫程序,循環實現小車的前進一秒、后退一秒、左轉一秒、右轉一秒、停止一秒功能。
圖形化方式:
如果有同學發現,按照下面的程序上傳后,小車的運動有問題,那么可以通過改變直流電機的接線或者修改數字輸出引腳的高低電平即可。
代碼方式:
/* 項目名稱:循環控制小車運動
* 項目時間:2022.03.28
* 項目作者: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; //等待時間
int value = 100; // 模擬輸出的值
//前進
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,value);
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,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);
}
練習二:可調速的小車
通過讀取可調電位器的值,來實現車速的變化。
電路接線:
在上圖的基礎上,增加一個可調電位器連接到UNO的A0腳。
圖形化方式:
代碼方式:
/* 項目名稱:電位器控制小車速度
* 項目時間:2022.03.28
* 項目作者: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();
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
電機控制
+關注
關注
3536文章
1880瀏覽量
268884 -
電位器
+關注
關注
14文章
1012瀏覽量
66825 -
直流電機
+關注
關注
36文章
1710瀏覽量
70216 -
輪式機器人
+關注
關注
0文章
7瀏覽量
9007 -
Arduino
+關注
關注
188文章
6471瀏覽量
187224
發布評論請先 登錄
相關推薦
Arduino的直流電機調速
Arduino的直流電機調速(深圳市核達中遠通電源技術有限公司招聘電話)-基于Arduino的直流電機調速? ? ? ? ? ? ? ? ? ? ? ??
發表于 09-18 16:12
?61次下載
動手玩轉Arduino---運動控制(直流電機步進電機舵機)
動手玩轉Arduino---運動控制(直流電機步進電機舵機)(電源技術是中文核心嗎)-該文檔為動手玩轉Arduino---運動
發表于 09-23 09:22
?36次下載
繼電器控制直流電機
:Arduino、按鍵、繼電器、直流電機
軟件:Mixly IDE
四、實驗過程(實驗步驟、記錄、數據、分析)
核心代碼截圖:
(1)、完成使用繼電器控制直流電機功能。
發表于 04-03 11:01
?4次下載
評論