Moinsen,

wir haben einen GiggleBot, der von einem micro:bit gesteuert wird.

Programmieren tun wir mit makecode von Microsoft. Das ist so ähnlich wie Scratch, mBlock etc.

Jetzt soll der Robbi ein "sauberes" Viereck fahren.

Angetrieben wird der Robbi von zwei einfachen Getriebemotoren, die zum Lenken oder Drehen auf der Stelle unterschiedlich schnell bzw. in entgegengesetzte Richtung drehen.
In den Blöcken können wir die Zeit eingeben, wie lange gefahren werden soll, bzw. wie lange gedreht oder gelenkt werden soll.
So weit, so einfach.

Der Code lässt sich aus makecode mit meinen Fähigkeiten nicht rauslesen, er sieht etwa so aus:

Bei Start
Wiederhole 4 x
Fahre 1000 ms
Drehe 850 ms

850 ms drehen sind bei der eingestellten Motordrehzahl und Parkettboden etwa 90°.

Natürlich läuft das Ding nicht sauber geradeaus.
Dafür gibt es aber einen Korrekturblock, wo per trial-and-error ein Wert ermittelt werden kann, damit der Geradeauslauf funktioniert.
Da dieser Block mit dem Wert aber immer Bestandteil des Programms sein muss, der Wert sich aber Ändern könnte, z.B. bei verschiedenen Untergründen, halte ich das für nicht praktikabel.

Jetzt hat der Micro:bit einen Kompass und einen Beschleunigungssensor drin. Von letzterem habe ich keine Ahnung und weiß auch nicht, wie ich auf die Werte von diesem Zugreifen kann.
Den Kompass kann ich auslesen, den Wert als Variable speichern und z.B. anzeigen lassen.

Jetzt bin ich mal hingegangen und habe versucht, den Robbi in eine bestimmte Richtung zeigen zu lassen. Ich habe rechts drehen wenn Sensorwert < 75° oder > 115° programmiert, sonst stop als Endlosschleife programmiert.
An sich müsste der Robbi sich dann so lange rechts rum drehen, bis er, ganz grob, nach Westen zeigt. Der Kompass scheint zu funktionieren, aber warum dreht der nicht sauber?

Ich will heute Abend mal weiter rumspielen ob, ich das irgendwie gelöst bekomme, vielleicht sollte ich erstmal durch Anzeigen von LED versuchen herauszufinden, ob hier überhaupt sinnvolle Steuersignale erzeugt werden und wir schnell / genau der Kompass ist.

Für sachdienliche Hinweise wäre ich dankbar, andere Robbis, die mit Calliope, micro:bit etc. gesteuert werden dürften ähnliche Probleme haben, oder?

Besten Gruß,

Ocho