Hallo hirbel,
uff, nun aber was tippen.
Ein paar Dinge sind mir erst mal so aufgefallen:
- Super formatierter Code.
- Sparsame Kommentierung. Vor allem wenden() ist betroffen.
- Schön modular geschrieben.
Inhaltlich ist mir aufgefallen, dass du Drehungen nur auf 90°-Drehungen zurückführst. Und dann hast du per Define mit "#define WINKEL90 60 //Drehwinkel (60 ~ 90 Grad)" das auch noch 'getürkt'. Warum nutzt du nicht eine Winkelangabe mit den gewünschten Werten?
Hier scheint deine Odometrie doch noch nicht richtig abgestimmt zu sein mit den Parametern für my_asuro.h.
Schön ausgetrickst hast du das Geradeausfahren mit der Tastenerkennung.
Ja, ja, da ist die Lib ein bisschen schwach. Entweder Fahren mit GoTurn(), oder Tasten auswerten.
Auch ohne Kommentare finde ich deine Auswertung in wenden() gut gelößt, wenn du nach dem ersten Wandkontakt erkennen must, wo die nächste Bahn zu putzen ist. Rechts oder Links? Das ist die Frage; hatte schon Otto vor bestimmt 30 Jahren bemerkt.
Als Erweiterung, könnte ich mir vorstellen, dass man nach dem Einschalten vom Asuro erst mal in einem Menü-Mode ist, um mit den Tasten z.B. die Geschwindigkeit und eventuell die Odometriedaten ändern zu können. Mit ein bisschen Kommunikation zum PC könnte angezeigt werden was gerade eingestellt ist im Asuro und der faule 'Nichtputzer' kann dann so lange Tasten drücken, bis die per Asurotasten änderbaren my_asuro-Werte zu seiner Hardware passen.
Erst auf Tastendruck einer 'Lets go'-Taste sollte dann dein Putz-Programm starten.
Natürlich fehlt auch noch die Swiffer-Ausklopft-Funktion
Mein Senf: Nicht schlecht gemacht!
Mit frisch geputzen Grüßen
Sternthaler
Lesezeichen