Video youtube du résultat du tutoriel
Installez le board manager pour la Pico.
Vous devez bracher les composants comme indiqué:
Lidar ld06:
Data (fil blanc) -> GP5
CTL (fil jaune) -> GP4
GND (fil rouge) -> GND
P5V (fil bleu) -> Vbus
Anneau LED:
5V (fil rouge) -> Vbus
GND (fil blanc) -> GND
Di (fil vert) -> GP2
Télechargez les librairies si ce n'est pas déjà fait Uplodez ce code:
Librairie ld06
Librairie Adafruit
#include <Adafruit_NeoPixel.h>
#include "ld06.h"
#define PIN_LED 2
#define NUMPIXELS 24
Adafruit_NeoPixel pixels(NUMPIXELS, PIN_LED, NEO_GRB + NEO_KHZ800);
#define RX_LIDAR 5
#define PWM_LIDAR 4
#define BAUD_RATE 230400
LD06 ld06(Serial2);
#define DIST_MIN 200
#define DIST_MAX 1000
void setup() {
Serial.begin(115200);
pixels.begin();
pixels.setBrightness(50);
pixels.show();
pinMode(PWM_LIDAR, OUTPUT);
digitalWrite(PWM_LIDAR, HIGH);
Serial2.setRX(RX_LIDAR);
Serial2.begin(BAUD_RATE);
ld06.init();
}
void loop() {
if (ld06.readScan()) {
uint16_t min_distances[NUMPIXELS];
for (int i = 0; i < NUMPIXELS; i++) {
min_distances[i] = DIST_MAX;
}
uint16_t n = ld06.getNbPointsInScan();
for (uint16_t i = 0; i < n; i++) {
uint16_t angle = ld06.getPoints(i)->angle;
uint16_t distance = ld06.getPoints(i)->distance;
if (distance > 0) {
uint8_t sector = (uint8_t)(angle / (360.0 / NUMPIXELS));
if (distance < min_distances[sector]) {
min_distances[sector] = distance;
}
}
}
for (int i = 0; i < NUMPIXELS; i++) {
uint16_t dist = constrain(min_distances[i], DIST_MIN, DIST_MAX);
uint8_t r = map(dist, DIST_MIN, DIST_MAX, 255, 0);
uint8_t g = map(dist, DIST_MIN, DIST_MAX, 0, 255);
pixels.setPixelColor(i, pixels.Color(r, g, 0));
}
pixels.show();
}
}
Et voilà, vous avez un radar LED!












