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
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
  Servo über Temperatur steuern querkopf71 3 83 07.12.2016 19:21
Letzter Beitrag: hotsystems
  Frage zur Programmierung eines Ultraschallsensors jalu4601 10 360 21.09.2016 15:06
Letzter Beitrag: Bitklopfer
  Ansteuern eines Schrittmotors Uwe1475 28 1.029 03.09.2016 21:03
Letzter Beitrag: Uwe1475
  Arduino Steuern über eigne Homepage b3ta 8 406 16.08.2016 11:07
Letzter Beitrag: Pit
  Zwei ident Feuchtesensoren an Arduino Uno R4 Karli 5 357 24.07.2016 23:36
Letzter Beitrag: SkobyMobil
  PWM-Lüfter mit Adafruit Motor-Shield steuern? phischmi 9 466 22.07.2016 18:06
Letzter Beitrag: phischmi
  Steuern von 4 Servo mittels eines Taster und eines Potis Jackie09 17 766 16.07.2016 11:43
Letzter Beitrag: Binatone
  Zerlegung eines Programmcodes hello_world 5 537 30.04.2016 11:01
Letzter Beitrag: rkuehle
  DC Motor in beide Richtungen steuern WIMunios 5 652 24.03.2016 12:04
Letzter Beitrag: Bitklopfer
  Mit RFID Sensor NFC Tags steuern WIMunios 14 926 15.03.2016 12:07
Letzter Beitrag: WIMunios

Gehe zu:


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