Lidar TFMini mit Stepper Motor kombinieren

Moin Moin zusammen,

ich bin taufrisch im Thema Microcontroller, daher verzeiht mir wenn ich noch ein bisschen Grün hinter den Ohren bin.

Mein Projekt:
Ich möchte einen Kreis abfahren und dabei mit dem Lidar Sensor den Abstand zum Boden messen.
Am Ende mächte ich eine Ausgabe erreichen, bei der der Absstand über dem Drehwinkel des Steppermotor ausgegeben wird. Nun habe ich mich schon einige Tage damit beschäftig und gefühlt 1000 Forumseinträge gelesen, allerdings will mit die Kopplung der beiden Sketche nicht gelingen. (einzeln für sich funktionieren beide)

Meine Vermutung es liegt an den unterschiedlichen Baud Raten konnte ich nicht Nachweisen und stehe grade irgendwie auf dem Schlauch. Vielleicht hat ja hier jemand einen kleinen Tipp für mich :slight_smile:

hier mein aktueller Code:

#include <DFRobot_TFmini.h>

SoftwareSerial mySerial(2, 3); // RX, TX

DFRobot_TFmini  TFmini;
uint16_t distance,strength;

#include <Stepper.h>

const int stepsPerRevolution = 200 ;  // change this to fit the number of steps per revolution

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);


void lidarsetup(){
    Serial.begin(115200);
    TFmini.begin(mySerial);
}

void lidarloop(){
    if(TFmini.measure()){                      //Measure Distance and get signal strength
        distance = TFmini.getDistance();       //Get distance data
        strength = TFmini.getStrength();       //Get signal strength data
        Serial.print("Distance = ");
        Serial.print(distance);
        Serial.println("cm");
        Serial.print("Strength = ");
        Serial.println(strength);
        delay(500);
    }
    delay(500);
}

void Steppersetup(){
// set the speed at 20 rpm:
  myStepper.setSpeed(1);
  // initialize the serial port:
//Serial.begin(9600);
}

void Stepperloop(){
     // step one revolution  in one direction:
 // Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);

  // step one revolution in the other direction:
//  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}


void setup() {
  // put your setup code here, to run once:

lidarsetup();
Steppersetup();
}

void loop() {
  // put your main code here, to run repeatedly:

lidarloop();
Stepperloop();
}

es gibt keine Fehlermeldung beim Kompilieren oder Hochladen.
Der Stepper Motor macht wie gewünscht seine Umdrehungen, allerdings bekomme ich leider keine Ausgabe vom Lidar.

Vielen Dank schonmal für eure Hilfe!

Grüße

Hi

Muß gleich noch googeln, was LIDAR überhaupt darstellt ... zu Deinem Sketch:

Du lässt den Stepper eine Runde vorwärts drehen, machst eine Pause von 500ms (delay), lässt den Stepper eine Runde rückwärts drehen, machst eine Pause (delay), fragst (bei STEHENDEM STEPPER) wohl den Messwerte vom LIDAR ab und gibst Diese seriell aus - danach machst Du noch zwei Pausen a 500ms (delay).

Denke, SO willst Du Das nicht, oder?

Schaue Dir das Beispiel in der IDE BlinkWithoutDelay an - und setze die Idee dahinter in Deinem Sketch um.

Auch willst Du nicht, daß der Stepper eine ganze Runde dreht - Du willst, daß Er (zu gegebener Zeit) einen Schritt macht - dort willst Du auch messen.

MfG