写一个超声波避障遥控arduino小车
时间: 2023-12-24 20:03:12 浏览: 91
好的,以下是一个简单的超声波避障遥控arduino小车的代码:
```
#include <Servo.h>
int trigPin = 9; // 超声波发射引脚
int echoPin = 10; // 超声波接收引脚
int motor1 = 5; // 左轮电机控制引脚
int motor2 = 6; // 右轮电机控制引脚
Servo servo; // 舵机实例
int servoPin = 11; // 舵机控制引脚
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(motor1, OUTPUT);
pinMode(motor2, OUTPUT);
servo.attach(servoPin);
Serial.begin(9600);
}
void loop() {
// 读取超声波距离
long duration, cm;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
cm = duration / 58;
// 根据距离控制小车运动
if (cm > 10) {
digitalWrite(motor1, HIGH);
digitalWrite(motor2, HIGH);
} else {
digitalWrite(motor1, LOW);
digitalWrite(motor2, LOW);
delay(500);
servo.write(90); // 舵机控制小车转向
delay(500);
}
// 读取串口指令,控制小车运动
if (Serial.available() > 0) {
char cmd = Serial.read();
switch (cmd) {
case 'F':
digitalWrite(motor1, HIGH);
digitalWrite(motor2, HIGH);
break;
case 'B':
digitalWrite(motor1, LOW);
digitalWrite(motor2, LOW);
break;
case 'L':
digitalWrite(motor1, HIGH);
digitalWrite(motor2, LOW);
break;
case 'R':
digitalWrite(motor1, LOW);
digitalWrite(motor2, HIGH);
break;
case 'S':
digitalWrite(motor1, LOW);
digitalWrite(motor2, LOW);
break;
}
}
}
```
这个代码中,我们使用一个舵机来控制小车的转向,超声波传感器来检测前方障碍物的距离,通过串口指令来控制小车的运动。你可以通过串口调试助手发送指令来控制小车的运动,指令包括:
- F:前进
- B:后退
- L:左转
- R:右转
- S:停止
希望能对你有所帮助!
阅读全文