INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Programmierung eines ToF-Abstandssensors
01.02.2019, 23:05 (Dieser Beitrag wurde zuletzt bearbeitet: 01.02.2019 23:43 von Bitklopfer.)
Beitrag #1
Programmierung eines ToF-Abstandssensors
Hallo Leute,
ich habe ein Problem bei meinem aktuellen Projekt und hoffe, jemand kann mir helfen!
Ich baue eine Wagen, der Drei Räder hat (Zwei motorisierte Heckräder, ein bewegliches "Bug-Rad") und der sich autonom fortbewegen soll. Anstatt mehrere Sensoren einzusetzen, wollte ich das ganze mit einem einzigen ToF-Sensor umsetzen. Dafür habe ih diesen auf einen Servo gesetzt, der sich am Bug des Gefährts befindet und je 95 Grad nach links und 95 Grad nach recht dreht, während der Sensor die Abstände misst. Ist ein gemessener Abstand nun kleiner als ein vorgegebener kritischer Wert (200mm), während der Servo gerade nach rechts ausgerichtet ist, weicht der Wagen nach links aus und so weiter (gleiches System für alle Richtungen, auch vorne und hinten).

Nun zu meinem Problem: An sich funktioniert alles, nur an einer Stelle gibt es einen essentiellen Fehler:
Wenn man die Motoren aus dem loop nimmt, misst der ToF fleißig die Abstände. Befinden sich allerdings die Anweisungen für den motor auch im Loop, mist der ToF nur noch den ersten Abstand und gibt anschließend nur noch den ersten Abstand wieder.

Dadurch wird der gesamte Wagen unbrauchbar. Da ich trotz intensiver Recherche keine Hinweise finden konnte, frage ich nun hier, und hoffe, ihr könnt mir helfen!
Mit freundlichen Grüßen
Max

Code:
Code:
[ php ] <=== das ist kein PHP Fenster
#include "Adafruit_VL53L0X.h"
#include <AFMotor.h>
#include <Servo.h>
#include <math.h>

int barrierDist = 200;

AF_DCMotor motor1(1);
AF_DCMotor motor4(4);
Servo name_servo;

int servo_position = 0;
Adafruit_VL53L0X lox = Adafruit_VL53L0X();

void setup()
{

   motor1.setSpeed(0);
   motor4.setSpeed(0);

   Serial.begin(115200);
   name_servo.attach(10);

   while (!Serial) {
       delay(1);
   }

   Serial.println("Adafruit VL53L0X test");
   if (!lox.begin()) {
       Serial.println(F("Failed to boot VL53L0X"));
       while (1)
           ;
   }
   // power
   Serial.println(F("VL53L0X API Simple Ranging example\n\n"));
}

int getMsrmnt()
{
   VL53L0X_RangingMeasurementData_t measure;
   lox.rangingTest(&measure, false);
   return measure.RangeMilliMeter;
}

// driveDir between [-1; 1] // -1 = go left; 1 = go right; 0 = go straight forward
void driveCar(int velocity, float driveDir)
{
   if (driveDir == 0) {
       motor1.setSpeed((int)abs(velocity));
       motor4.setSpeed((int)abs(velocity));
   }
   else {

       motor1.setSpeed((int)abs(velocity * max(0, -driveDir)));
       motor4.setSpeed((int)abs(velocity * max(0, driveDir)));
   }
   if (velocity > 0) {
       motor1.run(BACKWARD);
       motor4.run(BACKWARD);
   }
   else if (velocity < 0) {
       motor1.run(FORWARD);
       motor4.run(FORWARD);
   }
   else {
       motor1.run(RELEASE);
       motor4.run(RELEASE);
   }
}

void outputMsrmnt()
{
   int distance = getMsrmnt();

   Serial.print("Reading a measurement... ");

   Serial.print("Distance (mm): ");
   Serial.println(distance);
}

void loop()
{

   int rightMsrmnt = getMsrmnt();

   Serial.print("Right Msrmnt (mm): ");
   Serial.print(rightMsrmnt);
   Serial.println("");

   for (servo_position = 0; servo_position <= 180; servo_position += 8) {

       name_servo.write(servo_position);

       //  outputMsrmnt();

       delay(10);
   }

   int leftMsrmnt = getMsrmnt();

   Serial.print("Left Msrmnt (mm): ");
   Serial.print(leftMsrmnt);
   Serial.println("");

   for (servo_position = 180; servo_position >= 0; servo_position -= 8) {

       name_servo.write(servo_position);

       //   outputMsrmnt();

       delay(10);
   }

   if (leftMsrmnt < barrierDist && rightMsrmnt >= barrierDist) {
       driveCar(250, 1);
   }
   else if (leftMsrmnt >= barrierDist && rightMsrmnt < barrierDist) {
       driveCar(250, -1);
   }
   else if (leftMsrmnt >= barrierDist && rightMsrmnt >= barrierDist) {
       driveCar(250, 0);
   }
   else {
       driveCar(-250, 1);
   }
   delay(100);
}

[ / php ] Bitte das Code Tag "#" verwenden....lgbk Moderator
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.02.2019, 23:09
Beitrag #2
RE: Programmierung eines ToF-Abstandssensors
In welchem Forum hättest Du denn gern die Antworten? Hier oder nebenan?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.02.2019, 23:16
Beitrag #3
RE: Programmierung eines ToF-Abstandssensors
(01.02.2019 23:09)Tommy56 schrieb:  In welchem Forum hättest Du denn gern die Antworten? Hier oder nebenan?

Gruß Tommy

Ich hatte befürchtet, dass sich das andere Forum nicht mit Projekten, sondern eher mit einzelnen Arduino-Komponenten und Bauteilen auseinandersetzt und dachte mir, dass ich mein Problem vielleicht eher hier eintragen sollte.

Gruß Max
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.02.2019, 23:21 (Dieser Beitrag wurde zuletzt bearbeitet: 01.02.2019 23:22 von Tommy56.)
Beitrag #4
RE: Programmierung eines ToF-Abstandssensors
Suche mal nach Crossposting und verstehe, warum es schlecht ist.

Unabhängig davon vermute ich, dass Du auch hier keine Lösung bekommen wirst.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Programmierung eines MIDI-Controllers Schraubfix 15 608 26.01.2019 14:22
Letzter Beitrag: Franz54
  Prüfung eines Drucksensors mit Hilfe des Arduino r4c3 20 4.478 17.11.2018 18:25
Letzter Beitrag: Bitklopfer
  Ändern der Reihenfolge eines "Lauflichtes" rebeldesigned 3 384 05.11.2018 12:07
Letzter Beitrag: rebeldesigned
  Arduino Nano Programmierung Relais Mister_ACE 27 2.483 30.09.2018 09:22
Letzter Beitrag: Mister_ACE
  Probleme beim Hochladen eines Sketches Thandor 8 2.483 08.06.2018 13:19
Letzter Beitrag: Thandor
  Vorüberlegungen zum Bau eines Hexapoden juergen001 11 2.446 20.05.2018 23:02
Letzter Beitrag: GuaAck
  Hilfe bei der Programmierung Digitaluhr ,mit Anzeige 32x8 Lora 1 692 10.03.2018 11:44
Letzter Beitrag: hotsystems
Question Hilfe bei Programmierung Niklas 15 1.875 02.02.2018 12:55
Letzter Beitrag: Niklas
  Neulig sucht Hilfe bei Programmierung der Spannungsprotokollierung Matej 42 5.598 01.02.2018 18:11
Letzter Beitrag: Matej
  Kleiner Denkanstoß - Auslesen eines KY-040 Encoders Stargazer 26 2.845 20.12.2017 16:13
Letzter Beitrag: Stargazer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste