馬達控制器

型號:L298N

功能及介紹

  1. 控制馬達正反轉,以及速度
  2. 可支援到36V 4A的電壓電流
  3. 可輕鬆控制直流電機器(最多2個)
  4. 使用H bridge

運用

  1. 使用在

程式

void forward() { // 馬達轉向:前進
digitalWrite(LEFT1, HIGH);
digitalWrite(LEFT2, LOW);
digitalWrite(RIGHT1, HIGH);
digitalWrite(RIGHT2, LOW);
}

void backward() { // 馬達轉向:後退
digitalWrite(LEFT1, LOW);
digitalWrite(LEFT2, HIGH);
digitalWrite(RIGHT1, LOW);
digitalWrite(RIGHT2, HIGH);
}

void turnLeft() { // 馬達轉向:左轉
digitalWrite(LEFT1, LOW);
digitalWrite(LEFT2, HIGH);
digitalWrite(RIGHT1, HIGH);
digitalWrite(RIGHT2, LOW);
}

void turnRight() { // 馬達轉向:右轉
digitalWrite(LEFT1, HIGH);
digitalWrite(LEFT2, LOW);
digitalWrite(RIGHT1, LOW);
digitalWrite(RIGHT2, HIGH);
}

void setup() {
Serial.begin(9600);
pinMode(LEFT1, OUTPUT);
pinMode(LEFT2, OUTPUT);
pinMode(LEFT_PWM, OUTPUT);
pinMode(RIGHT1, OUTPUT);
pinMode(RIGHT2, OUTPUT);
pinMode(RIGHT_PWM, OUTPUT);
}

void loop() {
if (Serial.available() > 0) {
cmd = Serial.read();

​​​​switch (cmd) {
​​​​  case 'w':		// 接收到'w',前進。
​​​​    forward();
​​​​    run = true;	// 啟動馬達
​​​​    break;
​​​​  case 'x':		// 接收到'x',後退。
​​​​    backward();
​​​​    run = true;	// 啟動馬達
​​​​    break;
​​​​  case 'a':		// 接收到'a',左轉。
​​​​    turnLeft();
​​​​    run = true;	// 啟動馬達
​​​​    break;
​​​​  case 'd':		// 接收到'd',右轉。
​​​​    turnRight();
​​​​    run = true;	// 啟動馬達
​​​​    break;
​​​​  case 's':
​​​​    run = false;	// 停止馬達
​​​​    break;
​​​​}

}

if (run) {
// 如果要啟動馬達…
// 向馬達輸出指定的類比電壓值
analogWrite(LEFT_PWM, motorSpeed);
analogWrite(RIGHT_PWM, motorSpeed);
} else {
// 否則…
// 將馬達的電壓值設定成0
analogWrite(LEFT_PWM, 0);
analogWrite(RIGHT_PWM, 0);
}
}

Select a repo