Ultraschallsensor- mit Servo+AHRS Programm zusammenführen

Hallo liebe Community,

Da ich sehr neu im Umgang mit der Arduino Software bin, diese aber für meine Diplomarbeit verwende, hätte ich Fragen zu einem Problem mit dem mein Kollege und ich kämpfen. Weil wir eher wenig Ahnung und die Programme mit Hilfe von Foren und Videos geschrieben haben.

Wir verwenden einen Arduino Uno mit einem Ultraschallsensor (HC-SR04), 4 Servomotoren (Marke billig), und einen 9-axis AHRS chip (Gyro, Acellerometer, Magnetometer). Da wir die Arbeit aufteilten verwendeten wir 2 Arduinos wobei ein Teil das Ultraschall-Programm und der andere Teil die Servo-Ansteuerung mittels dem Chip beinhaltete (beide funktionieren einzeln einwandfrei). Weil wir für unseren Nutzen aber nur 1 Arduino+Motorshield verwenden können, wollen wir nun die Programme zusammenführen, wobei wir dadurch auf ein Problem stoßen. Das Problem ist, dass wir es nicht hinbekommen die Programme parallel loopen zu lassen, also das keine Überschneidung und dadurch ein Stop des anderen Programms vorliegt. Also meine Frage: Gibt es eine Möglichkeit die Programme unabhängig voneinander, durchgehend (also wie einzeln) laufen zu lassen? Ich blicke bei den vielen Forum Posts nichtmehr durch :(. Die Werte des Sensors übertrage ich über den Serial Port und visualisiere sie dann in C#.

Also falls jemand eine Lösung parat hätte, nehme ich sie gerne entgegen :slight_smile: .

Tightbear:
Also falls jemand eine Lösung parat hätte, nehme ich sie gerne entgegen :slight_smile: .

Ohne deinen aktuellen Sketch (beide) haben wir keine Chance dir zu helfen.

Poste die Sketche bitte in Code-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Das kannst du auch nachträglich machen.
Dazu den Sketch markieren und die Schaltfläche klicken.

Damit wird dieser für alle besser lesbar.

Wenn in beiden Einzel-Sketchen loop() keine Zeit dauert, sollte es möglich sein, die beiden loop1 und loop2 zu nennen und dazu ein

void loop() {
  loop1();
  loop2();
}

Das Problem liegt vermutlich im Wort "Wenn" bzw. "keine Zeit"
Ein Ultraschall-Sensor braucht üblicherweise Zeit...

Ich vermute da ist delay() im Einsatz, deswegen läuft das nicht parallel und das eine stopt das andere.

Danke für die Rückmeldung mir wurde jetzt von meinem Prof. empfohlen ein Interrupt für den Us Sensor zu verwenden. Das ganze funktioniert einwandfrei danke trotzdem !

empfohlen ein Interrupt für den Us Sensor zu verwenden

Wenn solch eine Empfehlung schon reicht, dein Problem zu lösen:
Glückwunsch, und danke auch für deine Rückmeldung...
8)