本帖最后由 lxf 于 2020-8-17 13:29 编辑
目标
超声波小车的使用
实验材料
Arduino UNO开发板 配套USB数据线
L298N电机驱动板 9V充电锂电池和9V电池扣子 装有两个直流电机马达小车 HC-SR04超声波传感器模块 配套杜邦线若干 Arduino IDE软件
内容
前面没有障碍物时,小车前进,有障碍物时小车停止前进。
接线图
备注: L298N电机驱动板的ENA接Arduino UNO的4号引脚,ENB接Arduino UNO的12号引脚。
接线方式
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);
- }
- }
复制代码 |