ob du nun die strecke vorgibst oder die encoder-schritte nur zählst und dann ausgibst is doch wurscht.
nun progge los. schau dir den encoder-code an und schreib ihn um nur für eine ausgabe.
warum sollen andere immer alles vorkauen.
ich möchte ein prog schreiben und habe mich gefragt, wie man die gefahrene strecke messen kann. ich will sie also net vorher angeben, sondern sie nachher messen. also z b am anfang die messung starten und am ende das ergebnis abrufen!
ob du nun die strecke vorgibst oder die encoder-schritte nur zählst und dann ausgibst is doch wurscht.
nun progge los. schau dir den encoder-code an und schreib ihn um nur für eine ausgabe.
warum sollen andere immer alles vorkauen.
danke(sry, haben net ale soviel ahnung, wie du vorgibst zu haben)
...and always remember...
...AVR RULES...
Hallo Robomann93,
ich finde die Frage durchaus nicht dumm. Ich bin kein Programmierweltmeister und habe mir ebenfalls überlegt, wie ich die beim RP6 mitgelieferten Beispielprogramme zum Bewegungsverhalten (StateMachine) mit möglichst wenig Aufwand so abändern kann, dass eine Positionsinformation ausgegeben wird, auch dann, wenn z.B. ein MoveAtSpeed-Befehl durch einen Kollisions-Interrupt unterbrochen wird.
Ich hatte ursprünglich daran gedacht, einfach einen Timer zu verwenden, der bei Ausführung des MoveAtSpeed-Befehls auf 0 gesetzt und bei Abarbeiten des Interrupts ausgelesen wird. Aus der Zeit und der Geschwindigkeit kann man dann den Weg berechnen.
Ob man dazu auch direkt die Drehgebersignale verwenden kann, weiss ich nicht, weil man die ja dauernd mitlesen (irgendwo hochzählen) müsste. Genauer wäre der Weg sicher.
Vielleicht helfen Dir die Gedanken etwas weiter.
Und: Es gibt keine dummen Fragen.
Es gibt doch getLeftDistance() und getRightDistance(), damit wird die gesamte strecke gemessen die der RP6 seit dem Start zurück gelegt hat, also wenn du die strecke messen möchtest speicherst du getLeftDistance() und getRightDistance() in jeweils einer variable leftstart und rightstart ( nur ei vorschlag ). Die messung wurde damit gestartet. aM Ziel angekommen machst du einfach:
uint16_t xxxx = getRightDistance()-rightstart
...und...
uint16_t yyyy = getLeftDistance()-leftstart
und schon hast du die strecke die die Ketten abgefahren haben
MfG blenderkid
Danke!. Ohne weiteren Kommentar.
Lesezeichen