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
Mit zwei Ultraschallsensoren die Drehbewegung eines Servos steuern
18.02.2016, 17:07
Beitrag #1
Bug Mit zwei Ultraschallsensoren die Drehbewegung eines Servos steuern
Einen schönen guten Tag ArduinoForum,

das ist mein erster Post und ich hoffe, dass ich hier in Zukunft mehr Probleme, sowie Lösungen beitragen werde.
Ich habe einen Roboter zusammengebaut, der mit zwei Servo Motoren nach vorne und nach hinten angetrieben wird (Links/Rechts lenken geht nicht). Im vorderen, sowie hinteren Bereich des Rooters befindet sich jeweils ein Ultraschallsensor.
Die Aufgabe des Roboters liegt nun darin, Hindernisse ab einer Entfernung von 50cm zu erkennen und dann in die entgegengesetzte Richtung zu fahren, bis der nächste Hindernis ab einer Entfernung von 50cm erkannt wird dann wiederholt sich der Vorgang wieder. Diese 50cm sollen Vorne und Hinten gemessen werden. Hier mein Loop Code:

Code:
void loop()
{
  // Hier werden die Befehle der Ultraschallsensoren angepasst, dass der Trigger Nachrichten für eine bestimmte Zeit sendet
  // und dann pausiert, damit die Werte nicht über doppelte Triggersignale am Echo auftauchen
  digitalWrite(TriggerHinten, LOW);
  delayMicroseconds(5);
  digitalWrite(TriggerHinten, HIGH);
  delayMicroseconds(10);
  digitalWrite(TriggerHinten, LOW);
  
  // Berechnung der Entfehrnung in cm
  // kein Floar, da ich keine nachkommerzahlen haben will, um Messungenauigkeiten zu verhindern
  int distanceHinten = pulseIn(EchoHinten, HIGH);
  distanceHinten= distanceHinten/58;

  digitalWrite(TriggerVorne, LOW);
  delayMicroseconds(5);
  digitalWrite(TriggerVorne, HIGH);
  delayMicroseconds(10);
  digitalWrite(TriggerVorne, LOW);
  
  int distanceVorne = pulseIn(EchoVorne, HIGH);
  distanceVorne= distanceVorne/58;
  
  // Ausgeben der beiden Distance Werte
  Serial.print(distanceHinten);
  Serial.println(" cm Hinten");
  Serial.print(distanceVorne);
  Serial.println(" cm Vorne");
  delay(100);
  digitalWrite(RelaisPin,LOW);

  // Hier soll der Servo nach vorne fahren, wenn die Distance größer ist 50cm ist
if (distanceVorne > 50){
  digitalWrite(RelaisPin,HIGH);
  FLServo.write(102); // nach Vorne fahren
  FRServo.write(104); // nach Vorne fahren
  delay(1000);
  }

else if (distanceHinten > 50){
  digitalWrite(RelaisPin,HIGH);
  FLServo.write(96); // nach Hinten fahren
  FRServo.write(110); // nach Hinten fahren
  delay(1000);
  }
}
[/php]

Ich möchte, dass beide If Abfragen in Zusammenhang abgefragt werden, d.h. erst nachdem die DistanceVorne kleiner als 50 ist, soll der Roboter nach Hinten fahren, bis die DistanceHinten kleiner als 50 ist, dann soll der Roboter wieder nach vorne fahren und alles wiederholen.
Zurzeit ist es leider so, dass mein Roboter nach vorne fährt, bis die DistanceVorne kleiner als 50 ist, dann fährt der durch die zweite Abfrage nach hinten, bis die DistanceVorne wieder wieder größer ist als 50 ist, dann springt das Programm auf die erste Abfrage und fährt wieder nach vorne... dieser Vorgang wiederholt sich dann leider...

Ich hoffe, dass ich im Code nicht zufiel falsch gemacht habe und dass Ihr mir helfen könnt.

Vielen Dank!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.02.2016, 17:42 (Dieser Beitrag wurde zuletzt bearbeitet: 18.02.2016 17:47 von arduinofan.)
Beitrag #2
RE: Mit zwei Ultraschallsensoren die Drehbewegung eines Servos steuern
If Motor-nach-vorn , den Abstand von vorn anfragen , If Motor-nach-hinten den Abstand von hinten abfragen.
Jeweils den Motor schalten wenn der Abstand erreicht ist: Motor-nach vorn oder Motor-nach-hinten. Du darfst jeweils nur immer den einen Zustand abfragen und regeln und dann bei erreichen nur wieder den anderen Zustand abfragen und regeln.

Gruss
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.02.2016, 19:55
Beitrag #3
RE: Mit zwei Ultraschallsensoren die Drehbewegung eines Servos steuern
(18.02.2016 17:42)arduinofan schrieb:  If Motor-nach-vorn , den Abstand von vorn anfragen , If Motor-nach-hinten den Abstand von hinten abfragen.
Jeweils den Motor schalten wenn der Abstand erreicht ist: Motor-nach vorn oder Motor-nach-hinten. Du darfst jeweils nur immer den einen Zustand abfragen und regeln und dann bei erreichen nur wieder den anderen Zustand abfragen und regeln.

Gruss

Leider habe ich nicht verstanden, was du mir damit sagen willst.
Ich würde dich bitten, deine Antwort genauer zu erläutern.


Vielen Dank.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.02.2016, 20:07
Beitrag #4
RE: Mit zwei Ultraschallsensoren die Drehbewegung eines Servos steuern
Ich denke, er wollte Dir damit sagen, dass Du Dir in einer Variablen merken musst, wohin Du gerade fährst (vorwärts / rückwärts).

Fährst Du nach vorn, prüfst Du nur den vorderen Abstand, sonst nur den hinteren Abstand.

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
20.02.2016, 20:29
Beitrag #5
RE: Mit zwei Ultraschallsensoren die Drehbewegung eines Servos steuern
(18.02.2016 20:07)Tommy56 schrieb:  Ich denke, er wollte Dir damit sagen, dass Du Dir in einer Variablen merken musst, wohin Du gerade fährst (vorwärts / rückwärts).

Fährst Du nach vorn, prüfst Du nur den vorderen Abstand, sonst nur den hinteren Abstand.

Gruß Tommy

Verstehe, vielen Dank an euch!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2016, 18:37
Beitrag #6
RE: Mit zwei Ultraschallsensoren die Drehbewegung eines Servos steuern
(20.02.2016 20:29)Poet schrieb:  
(18.02.2016 20:07)Tommy56 schrieb:  Ich denke, er wollte Dir damit sagen, dass Du Dir in einer Variablen merken musst, wohin Du gerade fährst (vorwärts / rückwärts).

Fährst Du nach vorn, prüfst Du nur den vorderen Abstand, sonst nur den hinteren Abstand.

Gruß Tommy

Verstehe, vielen Dank an euch!

Flag nennt man das zum halten einer Störung. Oder Merker.
Nach einem Störungseingang muss zuerst die Störquelle beseitigt werden.
Hilft dass ?
Meldet der Sensor Stop wird das Flag gesetzt................................
Danach sind die Motoren am Werk
Meldet keiner mehr Stop und eine gewisse Zeit ..................

Grusss Carlo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Prüfung eines Drucksensors mit Hilfe des Arduino r4c3 0 17 Heute 19:05
Letzter Beitrag: r4c3
  Schrittmotor Geschwindigkeit mit Wägezelle + HX711 Modul steuern Schrittmotor 10 1.134 30.08.2017 23:45
Letzter Beitrag: hotsystems
  Zwei Arduinos mit ISP verbinden Binary1 17 1.463 01.08.2017 16:40
Letzter Beitrag: Binary1
  Servo mit einem Taster und 433mhz steuern Thor Wallhall 63 2.866 29.07.2017 11:02
Letzter Beitrag: Thor Wallhall
  2 Servos ohne delay steuern Ratlos 27 2.081 26.07.2017 20:43
Letzter Beitrag: MicroBahner
  Roboter kompassgestützt steuern Snörb 5 714 22.07.2017 12:16
Letzter Beitrag: Snörb
  Bei Änderung eines Zustandes (boolean) Aktion auslösen - wie? Gelegenheitsbastler 3 484 04.07.2017 10:50
Letzter Beitrag: Gelegenheitsbastler
  MCP2307 - wie fragt man den Zustand eines Ausganges ab? Gelegenheitsbastler 2 321 22.06.2017 14:04
Letzter Beitrag: Gelegenheitsbastler
  Neo Pixel Clone mit 7 2812B Steuern Lil-De 8 540 12.06.2017 22:02
Letzter Beitrag: Lil-De
  Lineares Messsystem zur Positionsbestimmung mithilfe eines Hallsensors Philipp_ 3 478 05.04.2017 16:29
Letzter Beitrag: ardu_arne

Gehe zu:


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