https://github.com/robopeak/rplidar_arduino
I'm using the above library and the program flash normally, but it doesn't work with the below error output on the serial monitor. Does anyone know how?
Code: Select all
#include <RPLidar.h>
RPLidar lidar;
// 핀 설정
#define RPLIDAR_MOTOR 1 // PWM 핀 (GPIO1)
// UART1 설정 (RPLidar 연결용)
#define RPLIDAR_UART_RX 18 // RPLidar TX 연결 (ESP32 RX)
#define RPLIDAR_UART_TX 17 // RPLidar RX 연결 (ESP32 TX)
// PWM 설정
#define PWM_FREQUENCY 20000 // 20kHz
#define PWM_RESOLUTION 8 // 8-bit (0~255)
#define PWM_DUTY_CYCLE 255 // 최대 듀티
void setup() {
Serial.begin(115200);
//Serial1.begin(115200, SERIAL_8N1, RPLIDAR_UART_RX, RPLIDAR_UART_TX);
lidar.begin(Serial1);
// PWM 초기화 (ESP32 Core 3.x API)
ledcAttach(RPLIDAR_MOTOR, PWM_FREQUENCY, PWM_RESOLUTION);
ledcWrite(RPLIDAR_MOTOR, PWM_DUTY_CYCLE);
delay(100);
lidar.startScan();
}
void loop() {
//if (IS_OK(lidar.waitPoint())) {
float distance = lidar.getCurrentPoint().distance;
float angle = lidar.getCurrentPoint().angle;
byte quality = lidar.getCurrentPoint().quality;
if (distance > 0) {
float radians = angle * PI / 180.0;
float x = distance * cos(radians);
float y = distance * sin(radians);
Serial.print(x, 1);
Serial.print(" ");
Serial.println(y, 1); // "x y" 출력
}
//}
// else {
// Serial.println("NO\n");
// ledcWrite(RPLIDAR_MOTOR, 0); // 모터 OFF
// rplidar_response_device_info_t info;
// if (IS_OK(lidar.getDeviceInfo(info, 100))) {
// lidar.startScan();
// ledcWrite(RPLIDAR_MOTOR, PWM_DUTY_CYCLE); // 모터 재시작
// delay(1000);
// }
// }
}