電機(jī)驅(qū)動(dòng)模塊在電子制作中會(huì)經(jīng)常使用到,下面以L298N型號(hào)的模塊為例介紹其使用方法。 模塊引腳說明如下:
1556592200334705.png (82.5 KB, 下載次數(shù): 48)
下載附件
2019-5-11 22:48 上傳
值得注意的是,它已經(jīng)內(nèi)置5V供電,所以不必從外面再接5V輸入。 1、實(shí)驗(yàn)材料
140242baa77u9zkckjccuu.jpg (37.44 KB, 下載次數(shù): 42)
下載附件
2019-5-11 22:48 上傳
電機(jī)驅(qū)動(dòng)板1塊 零知-標(biāo)準(zhǔn)板 杜邦線若干
2、接線
我們把零知標(biāo)準(zhǔn)板和電機(jī)驅(qū)動(dòng)板相連接,驅(qū)動(dòng)2路電機(jī)工作。接線圖如下:
1556592439779984.jpg (93.63 KB, 下載次數(shù): 42)
下載附件
2019-5-11 22:48 上傳
1556592373120027.jpg (93.63 KB, 下載次數(shù): 49)
下載附件
2019-5-11 22:48 上傳
引腳連接:
1556592689357465.png (7.42 KB, 下載次數(shù): 41)
下載附件
2019-5-11 22:48 上傳
最后我們把電機(jī)驅(qū)動(dòng)板的12v接到一個(gè)9v的電源上(如干電池組),然后GND連接到零知標(biāo)準(zhǔn)板的地。 3、程序
根據(jù)上述連接線后,我們使用程序來控制電機(jī)的運(yùn)行: - /**
- * 文件: 電機(jī)驅(qū)動(dòng).ino by 零知實(shí)驗(yàn)室([url=http://www.lingzhilab.com]www.lingzhilab.com[/url])
- * -^^- 零知開源,讓電子制作變得更簡(jiǎn)單! -^^-
- * 時(shí)間: 2018/10/13 15:01
- * 說明:
- **/
-
- //控制命令
- #define STOP 0
- #define FORWARD 1
- #define BACKWARD 2
- #define TURNLEFT 3
- #define TURNRIGHT 4
-
- //電機(jī)控制引腳
- #define LEFT_MOTOR1 2
- #define LEFT_MOTOR2 3
- #define RIGHT_MOTOR1 4
- #define RIGHT_MOTOR2 5
- #define LEFT_ENA 11
- #define RIGHT_ENB 12
-
- int LED_STATE = 0;
-
- void setup() {
- // put your setup code here, to run once:
-
- Serial.begin(9600);
-
- pinMode(LED_BUILTIN, OUTPUT);
-
- pinMode(LEFT_MOTOR1, OUTPUT);
- pinMode(LEFT_MOTOR2, OUTPUT);
- pinMode(RIGHT_MOTOR1, OUTPUT);
- pinMode(RIGHT_MOTOR2, OUTPUT);
- pinMode(LEFT_ENA,OUTPUT);
- pinMode(RIGHT_ENB,OUTPUT);
-
- motor_run(STOP);
-
- }
-
- void loop() {
- // put your main code here, to run repeatedly:
-
- int cmd = 1;
-
- motor_run(cmd);
-
- delay(1000);
-
- motor_run(0);
- }
復(fù)制代碼
把電機(jī)驅(qū)動(dòng)的操作作為一個(gè)函數(shù)motor_run(int cmd);如下:- /**
- * 根據(jù)命令點(diǎn)擊進(jìn)行相應(yīng)動(dòng)作
- * cmd 命令
- */
-
- int highSpeed = 200;
- int lowSpeed = 100;
-
- void motor_run(int cmd)
- {
- switch(cmd)
- {
- case FORWARD:
- Serial.println("FORWARD"); //輸出狀態(tài)
- analogWrite(LEFT_ENA,highSpeed);
- digitalWrite(LEFT_MOTOR1, LOW);
- digitalWrite(LEFT_MOTOR2, HIGH);
- analogWrite(RIGHT_ENB,highSpeed);
- digitalWrite(RIGHT_MOTOR1, LOW);
- digitalWrite(RIGHT_MOTOR2, HIGH);
- break;
- case BACKWARD:
- Serial.println("BACKWARD"); //輸出狀態(tài)
- digitalWrite(LEFT_MOTOR1, HIGH);
- digitalWrite(LEFT_MOTOR2, LOW);
- digitalWrite(RIGHT_MOTOR1, HIGH);
- digitalWrite(RIGHT_MOTOR2, LOW);
- break;
- case TURNLEFT:
- Serial.println("TURN LEFT"); //輸出狀態(tài)
- analogWrite(LEFT_ENA,lowSpeed);
- analogWrite(RIGHT_ENB,highSpeed);
- digitalWrite(LEFT_MOTOR1, LOW);
- digitalWrite(LEFT_MOTOR2, HIGH);//C
- digitalWrite(RIGHT_MOTOR1, LOW);
- digitalWrite(RIGHT_MOTOR2, HIGH);
- break;
- case TURNRIGHT:
- Serial.println("TURN RIGHT"); //輸出狀態(tài)
- analogWrite(LEFT_ENA,highSpeed);
- analogWrite(RIGHT_ENB,lowSpeed);
- digitalWrite(LEFT_MOTOR1, LOW);
- digitalWrite(LEFT_MOTOR2, HIGH);
- digitalWrite(RIGHT_MOTOR1, LOW);//C
- digitalWrite(RIGHT_MOTOR2, HIGH);
- break;
- case STOP:
- default:
- Serial.println("STOP"); //輸出狀態(tài)
- digitalWrite(LEFT_ENA,1);
- digitalWrite(RIGHT_ENB,1);
- digitalWrite(LEFT_MOTOR1, LOW);
- digitalWrite(LEFT_MOTOR2, LOW);
- digitalWrite(RIGHT_MOTOR1, LOW);
- digitalWrite(RIGHT_MOTOR2, LOW);
- break;
- }
- }
復(fù)制代碼把程序上傳到零知-標(biāo)準(zhǔn)板上,調(diào)整程序中cmd的值,看看效果吧!
更多詳細(xì)資料可到零知官網(wǎng)免費(fèi)獲取。
|