aeduino巡线小车代码
时间: 2024-09-19 07:13:13 浏览: 126
arduino巡线小车代码
Aeduino是一款针对教育场景设计的Arduino兼容开发板,常用于制作各种 DIY 科学实验和机器人项目,包括巡线小车。巡线小车的基本原理是通过红外传感器检测到黑线,然后控制电机驱动车辆沿着黑线行驶。
以下是基本的Aeduino巡线小车代码示例,使用了超声波避障和红外线跟踪:
```c++
#include <Servo.h> // 引入 Servo 库
#define LEFT_MOTOR_PIN 9
#define RIGHT_MOTOR_PIN 10
#define INFRARED_SENSOR_PIN A0
#define ULTRASONIC_TRIG_PIN 3
#define ULTRASONIC_ECHO_PIN 2
// 初始化硬件
Servo motorServo;
int infraredSensorValue = 0;
int ultrasonicDistance = 0;
void setup() {
pinMode(LEFT_MOTOR_PIN, OUTPUT);
pinMode(RIGHT_MOTOR_PIN, OUTPUT);
motorServo.attach(12); // 通常舵机连接数字12
Serial.begin(9600); // 打开串口调试
}
void loop() {
// 读取红外线传感器值
infraredSensorValue = analogRead(INFRARED_SENSOR_PIN);
// 根据红外传感器调整左右轮速度
if (infraredSensorValue > 500) { // 接近黑线
motorServo.write(90); // 转向右
} else {
motorServo.write(0); // 直行
}
// 避障:读取超声波距离并调整速度
digitalWrite(ULTRASONIC_TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(ULTRASONIC_TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(ULTRASONIC_TRIG_PIN, LOW);
while (millis() - pulseIn(ULTRASONIC_ECHO_PIN, HIGH) < 2000) {
ultrasonicDistance++;
}
ultrasonicDistance /= 2; // 取平均值补偿误差
if (ultrasonicDistance < 20) { // 当前距离小于安全范围
stopMotors(); // 停止前进
} else {
setMotorSpeed(ultrasonicDistance / 50); // 按距离远近调节速度
}
// 发送数据到串口进行查看
Serial.println("IR Sensor Value: " + String(infraredSensorValue));
Serial.println("Ultrasonic Distance: " + String(ultrasonicDistance) + " cm");
}
void stopMotors() {
digitalWrite(LEFT_MOTOR_PIN, LOW);
digitalWrite(RIGHT_MOTOR_PIN, LOW);
}
void setMotorSpeed(int speed) {
int leftSpeed = map(speed, 0, 100, 0, 255);
int rightSpeed = map(speed, 0, 100, 255, 0);
analogWrite(LEFT_MOTOR_PIN, leftSpeed);
analogWrite(RIGHT_MOTOR_PIN, rightSpeed);
}
```
阅读全文