【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百二十一:360°旋转扫描激光雷达测距传感器 ROS机器人建图导航定位 ROS小车导航路径规划避障模块(EAI YDLIDAR X4)
项目之一:从 RPLIDAR 获取数据的简单通用方法(您可以基于此模板自由添加您的应用程序代码)
实验接线:
1、将 RPLIDAR 的串行端口 (RX/TX/GND) 连接到您的 Arduino 板(引脚 0 和引脚 1)
2、将 RPLIDAR 的电机控制引脚连接到 Arduino 板引脚 3
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百二十一:360°旋转扫描激光雷达测距传感器 ROS机器人建图导航定位 ROS小车导航路径规划避障模块(EAI YDLIDAR X4)
项目之一:从 RPLIDAR 获取数据的简单通用方法(您可以基于此模板自由添加您的应用程序代码)
实验接线:
1、将 RPLIDAR 的串行端口 (RX/TX/GND) 连接到您的 Arduino 板(引脚 0 和引脚 1)
2、将 RPLIDAR 的电机控制引脚连接到 Arduino 板引脚 3
*/
// RPLIDAR 驱动程序库
#include <RPLidar.h>
//您需要创建驱动程序实例
RPLidar lidar;
#define RPLIDAR_MOTOR 3 //用于控制 RPLIDAR 电机速度的 PWM 引脚
//此引脚应与 RPLIDAR 的 MOTOCTRL 信号连接
void setup() {
// 将 RPLIDAR 驱动程序绑定到 arduino 硬件串行
lidar.begin(Serial);
// 设置引脚模式
pinMode(RPLIDAR_MOTOR, OUTPUT);
}
void loop() {
if (IS_OK(lidar.waitPoint())) {
float distance = lidar.getCurrentPoint().distance; //以毫米为单位的距离值
float angle = lidar.getCurrentPoint().angle; //以度为单位的角度值
bool startBit = lidar.getCurrentPoint().startBit; //起始位,此点是否属于新扫描
byte quality = lidar.getCurrentPoint().quality; //电流测量的质量
//在这里执行数据处理...
} else {
analogWrite(RPLIDAR_MOTOR, 0); //停止 rplidar 电机
// 尝试检测RPLIDAR...
rplidar_response_device_info_t info;
if (IS_OK(lidar.getDeviceInfo(info, 100))) {
// 检测到...
lidar.startScan();
// 启动电机以最大允许速度旋转
analogWrite(RPLIDAR_MOTOR, 255);
delay(1000);
}
}
}
|