RPLidar Kommunikations Probleme

Moin! Folgendes: ich habe ein Sommer Projekt und es ist ein Staubsaugroboter, ich bin schon soweit das alles sowiet läuft nur fehlt mir das wichtigste unswar verwende ich als Sensor system einen RPLidar A1M8-R6!
Es ist alles verkabelt und der Motor dreht sich auch(PS ist alles am Arduino angeschlossen), nun habe ich einen Test Code geschrieben der es erreichen soll, dass meine Motoren(Sind 4 Stück über ein Motor Shield) erstmal darauf reagieren wenn etwas <20cm in der nähe ist, nur tun sie dass nicht! Ich empfange auch nix auf dem Seriellen Monitor außer " Failed to initialize RPLidar!" oder maximal mal "����c���J���������c�J����������Ҥ"! Ich habe mehrere Codes ausprobiert und mich lange belesen nur leider keine vernünftige Antwort bekommen!
Hier der jetztige Testcode:

#include <AFMotor.h>
#include <RPLidar.h>

// Motor Shield Objekte erstellen
AF_DCMotor motor1(1);  // Motor 1 angeschlossen
AF_DCMotor motor2(2);  // Motor 2 angeschlossen
AF_DCMotor motor4(4);  // Motor 4 angeschlossen

// RPLidar Objekt erstellen
RPLidar lidar;

bool obstacleDetected = false;

void setup() {
  // Setze die Geschwindigkeiten der Motoren (0-255)
  motor1.setSpeed(255);
  motor2.setSpeed(255);
  motor4.setSpeed(255);
  
  // Alle Motoren vorwärts drehen lassen
  motor1.run(FORWARD);
  motor2.run(FORWARD);
  motor4.run(FORWARD);
  
  // RPLidar initialisieren
  Serial.begin(115200);
  if (!lidar.begin(Serial)) {
    Serial.println("Failed to initialize RPLidar!");
    while (1);
  }
}

void loop() {
  // RPLidar scannen
  if (lidar.waitPoint()) {
    float distance = lidar.getCurrentPoint().distance;
    
    Serial.print("Distance: ");
    Serial.println(distance);
    
    // Wenn die Entfernung kleiner als 20 cm ist
    if (distance < 199) {
      obstacleDetected = true;
      motor1.run(RELEASE);
      motor2.run(RELEASE);
      motor4.run(RELEASE);
    } else {
      obstacleDetected = false;
      // Motoren M1, M2 und M4 vorwärts drehen lassen
      motor1.run(FORWARD);
      motor2.run(FORWARD);
      motor4.run(FORWARD);
    }
  }
  
  // Wenn ein Hindernis erkannt wurde, warte einen Moment, bevor du den Lidar erneut scannst
  if (obstacleDetected) {
    delay(500);
  }
}

und hier noch ein Bild der verkablung:
RPLIDAR

Ich bedanke mich im Vorraus für die Antworten!
MfG

Hast Du Deinen seriellen Monitor auch auf 115200 eingestellt?
Ist 115200 die Default-Baudrate des Lidar?
Kommt der Lidar damit zurande, dass Du ihm die Debug-Ausgaben schickst?

Gruß Tommy

Klar habe ich den seriellen Monitor auch auf 115200 eingestellt und ja laut dem alleswissenden libevollem Internet ist es eigendlich die Default-Baudrate, und das letzt mit den Debug-Ausgaben kann ich leider nicht beantworten da ich jetzt noch nicht alles kenne da es mein erstes projekt ist, ich weiß ein wenig viel aber ich mache auch immerhin die Ausbildung zum Elektroniker für Geräte und System und da DARF mein 1. Projekt keine Bastellei sein!

Hallo kuratux

Eröffne einen zweiten seriellen Port und klemme der/die/das Lidar an diesen Port.

  1. Seriellen Port mit softwareserial benutzen.

Könnte ein Problem mit 115200 geben.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.