arduino无舵机避障小车
时间: 2024-01-09 08:05:26 浏览: 25
以下是一个基于Arduino的无舵机避障小车的代码示例:
```arduino
// 引入LCD库
#include <LiquidCrystal.h>
// 定义LCD引脚
LiquidCrystal lcd(11, 2, 3, 4, 7, 8);
// 定义超声波引脚
#define trigPin 12
#define echoPin 13
// 定义电机引脚
#define L_motor_go 5
#define L_motor_back 6
#define R_motor_go 9
#define R_motor_back 10
// 定义超声波测距函数
int Distance_test()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
int distance = pulseIn(echoPin, HIGH) / 58.00;
return distance;
}
// 定义小车前进函数
void Forward()
{
digitalWrite(L_motor_go, HIGH);
digitalWrite(L_motor_back, LOW);
digitalWrite(R_motor_go, HIGH);
digitalWrite(R_motor_back, LOW);
}
// 定义小车后退函数
void Backward()
{
digitalWrite(L_motor_go, LOW);
digitalWrite(L_motor_back, HIGH);
digitalWrite(R_motor_go, LOW);
digitalWrite(R_motor_back, HIGH);
}
// 定义小车左转函数
void Left()
{
digitalWrite(L_motor_go, LOW);
digitalWrite(L_motor_back, HIGH);
digitalWrite(R_motor_go, HIGH);
digitalWrite(R_motor_back, LOW);
}
// 定义小车右转函数
void Right()
{
digitalWrite(L_motor_go, HIGH);
digitalWrite(L_motor_back, LOW);
digitalWrite(R_motor_go, LOW);
digitalWrite(R_motor_back, HIGH);
}
// 定义小车停止函数
void Stop()
{
digitalWrite(L_motor_go, LOW);
digitalWrite(L_motor_back, LOW);
digitalWrite(R_motor_go, LOW);
digitalWrite(R_motor_back, LOW);
}
void setup()
{
// 初始化LCD
lcd.begin(16, 2);
// 初始化电机引脚
pinMode(L_motor_go, OUTPUT);
pinMode(L_motor_back, OUTPUT);
pinMode(R_motor_go, OUTPUT);
pinMode(R_motor_back, OUTPUT);
// 初始化超声波引脚
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop()
{
// 获取当前距离
int distance = Distance_test();
// 显示当前距离
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.print(distance);
lcd.print(" cm");
// 如果距离小于10cm,后退
if (distance < 10)
{
Backward();
delay(500);
Left();
delay(1000);
}
// 如果距离小于20cm,左转
else if (distance < 20)
{
Left();
delay(1000);
}
// 如果距离小于30cm,前进
else if (distance < 30)
{
Forward();
}
// 如果距离大于30cm,右转
else
{
Right();
delay(1000);
}
}
```