Today
生成一個自走車 的arduino程式
當然可以!以下是一個簡單的 Arduino 程式,用於控制一輛自走車。這個程式假設您的自走車使用了兩個直流馬達和一個超聲波傳感器來進行避障。馬達由 L298N 驅動板控制,超聲波傳感器是 HC-SR04。
cpp
*********************************************************
=
#define trigPin 9
#define echoPin 10
#define motorLeftForward 3
#define motorLeftBackward 4
#define motorRightForward 5
#define motorRightBackward 6
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(motorLeftForward, OUTPUT);
pinMode(motorLeftBackward, OUTPUT);
pinMode(motorRightForward, OUTPUT);
pinMode(motorRightBackward, OUTPUT);
Serial.begin(9600);
}
long getDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
return duration * 0.034 / 2; // 將時間轉換為距離(單位:公分)
}
void moveForward() {
digitalWrite(motorLeftForward, HIGH);
digitalWrite(motorLeftBackward, LOW);
digitalWrite(motorRightForward, HIGH);
digitalWrite(motorRightBackward, LOW);
}
void stopMotors() {
digitalWrite(motorLeftForward, LOW);
digitalWrite(motorLeftBackward, LOW);
digitalWrite(motorRightForward, LOW);
digitalWrite(motorRightBackward, LOW);
}
void turnRight() {
digitalWrite(motorLeftForward, HIGH);
digitalWrite(motorLeftBackward, LOW);
digitalWrite(motorRightForward, LOW);
digitalWrite(motorRightBackward, HIGH);
}
void loop() {
long distance = getDistance();
Serial.println(distance);
if (distance < 15) {
stopMotors();
delay(500);
turnRight();
delay(500);
} else {
moveForward();
}
}
********************************************************
程式功能簡介:
超聲波傳感器測距:用 HC-SR04 傳感器檢測前方障礙物距離。
避障邏輯:當距離小於 15 公分時,停止前進並右轉;否則,持續前進。
馬達控制:透過 L298N 控制左右馬達的方向和運動。
請根據您的硬體配置調整引腳號碼。如果您需要更複雜的功能或進一步的調試,請隨時告訴我! 🙂