Mehrere Ultraschallsensoren lassen sich schon aus akustischen Gründen in der Regel nicht wirklich “unsynchronisiert gleichzeitig” verwenden. Ist aber auch normalerweise (insbesondere hier) nicht nötig.
Man muss aber auch nicht den Rest des Programms deswegen blockieren!
Solange yield nicht dokumentiert ist und z.B. hier nicht erwähnt wird, würde ich nicht von “mitgeliefert” sprechen.
Das AGR Ventil deines Autos ist auch nicht in der Bedienungsanleitung erwähnt!
Aber doch gehört es zur Lieferung, wenn dir der Hersteller/Händler das Auto vor die Tür stellt.
Yield() gehört zum Lieferumfang, ob dir das passt oder nicht.
Es ist mir egal, ob dir das passt, und den ganzen Arduinos auch.
Natürlich kann man alles ausblenden, was nicht in der fürchterlich schwachen Arduino Doku steht.
Nur wird dann dein Programm genauso schwach.
Behauptung: Nur ein Dummkopf lasst sich von einer unvollständigen Doku ausbremsen.
Denn: Mit Aufmerksamkeit und Intelligenz lassen sich viele dieser Hürden umschiffen, Lücken füllen.
Klar ist es ein langer Weg, bis dahin…
Aber das kann doch kein Grund sein diese Features vor den Anfängern zu verbergen, oder?
Gibt es irgendeinen Grund, zu versuchen, Anfänger dumm zu halten?
Ist es nicht das genaue Gegenteil, des Sinn und Zweck, dieses Forums?
Nehmen wir mal deine heiß geliebten Ultraschallsensoren.
Quasi überall findet man pulseIn(). In nahezu jeder Lib.
Ist es dann nicht logisch, dass z.B. ein Balancer Robot, stumpf auf die Fresse fällt, oder zumindest derbe wackelt, wenn man auf den eingetretenen Pfaden bleibt?
Und Neulingen zuerst BlinkWithoutDelay ans Herz legen.
Diese Kritik kann ich nicht annehmen!
Du kritisierst Dinge, welche du dir selber ausgedacht hast.
Siehe Posting #2
BlinkWithoutDelay steht in meiner kleinen Linkliste ganz weit vorn.
Warum wohl?
Manno!
Wenn man dann deine TaskMakros versteht und sieht, wie diese die Aufgabe “preemptives Multitasking” lösen, kann man sie immer noch ganz toll finden.
Ist mir egal, wie das einer findet.
Wenns ihm gefällt, dann los, wenn nicht, dann nicht…
Den Code habe ich nur gepostet, weil Tommy56 da ein unsinniges, zumindest in der Absolutheit unsinniges, Dogma aufgestellt hat. Vor Schleifen und Delays zu warnen, finde ich völlig ok. Ist auch mein täglich Geschäft.
Aber da ein Tabu draus zu formen geht (mir) zu weit.
Tommy56 hats begriffen.
Bei dir dauert es noch…
So…
Die Eingangsfrage lautet:
Topic: Multitasking mit dem Arduino Uno?
Und du möchtest jetzt ernsthaft behaupten, dass meine TaskMacros in diesem Thread falsch untergebracht sind, habe ich dich da richtig verstanden?
Und dass man delay(1000) durch andere Konstruktionen ersetzen sollte, wenn man einen “echtzeitfähigen Sketch” braucht, halte ich immer noch für den richtigen Tip für Neulinge.
Der Tipp, ist auch völlig in Ordnung.
Aber es ist nicht die einzige Lösung.