材料准备
Arduino UNO开发板
配套USB数据线
L298N电机驱动板
9V充电锂电池和9V电池扣子
装有两个直流电机马达小车
HC-SR04超声波传感器模块
配套杜邦线若干
Arduino IDE软件
程序逻辑
当超声波传感器检测到前面有障碍时,小车停止前进,无障碍时小车继续前进。
元件接线方式
Arduino UNO <------> L298N电机驱动板
5V <------> +5V
GND <------> GND
ENA <------> 4
IN1 <------> 5
IN2 <------> 6
ENB <------> 12
IN3 <------> 10
IN4 <------> 11
L298N电机驱动板 <------> 直流减速电机A
OUT1 <------> 一端接口
OUT2 <------> 另一端接口
L298N电机驱动板 <------> 直流减速电机B
OUT3 <------> 一端接口
OUT4 <------> 另一端接口
9V充电锂电池 <------> L298N电机驱动板
正极 <------> +12V
负极 <------> GND
Arduino UNO <------> HC-SR04超声波传感器模块
5V <------> VCC
GND <------> GND
7 <------> Trig
3 <------> Echo
程序编程(仅供参考)
float checkdistance_7_3() { //定义一个浮点型函数checkdistance_7_3()
digitalWrite(7, LOW); //低高低电平发一个短时间脉冲去Trigpin
delayMicroseconds(2);
digitalWrite(7, HIGH);
delayMicroseconds(10);
digitalWrite(7, LOW);
float distance = pulseIn(3, HIGH) / 58.00; //将回波时间换算成distance
delay(10);
return distance; //向调用函数返回distance
}
void setup(){
pinMode(7, OUTPUT); //定义7号管脚为输出
pinMode(3, INPUT); //定义3号管脚为输入
pinMode(4, OUTPUT); //定义4号管脚为输出
pinMode(12, OUTPUT); //定义12号管脚为输出
pinMode(5, OUTPUT); //定义5号管脚为输出
pinMode(6, OUTPUT); //定义6号管脚为输出
pinMode(10, OUTPUT); //定义10号管脚为输出
pinMode(11, OUTPUT); //定义11号管脚为输出
}
void loop(){
if (checkdistance_7_3() < 20) { //如果前面有障碍物,小车停止
digitalWrite(4,LOW);
digitalWrite(12,LOW);
} else { //否则小车前进
digitalWrite(4,HIGH);
digitalWrite(12,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
}
}
