PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "Lichtverfolgung" in "TV-Remote" einbaue



fabqu
23.12.2010, 09:03
Hallo!
Wieder einmal eine Frage :D
Es geht um meinen (noch) RC5-Gesteuerten Robby. jedoch gibts bei dem hier eine kleinigkeit: meine Base hat eine Mischung aus Slave und Master aufgespielt. Soll heißen, alle Sensorwerte werden auf den I2C gelegt, aber dennoch kann sie selbst auf Bumper, RC5, ACS... reagieren oder Befehle von der M32 entgegennehmen.

Ein Robot, der lediglich ferngesteuert wird ist ja kein Robot, sondern eher ein RC-Car, daher möchte ich folgendes:
Auf einen bestimmten RC5-Code (sagen wir mal 32) soll der Robot komplett losgelöst von der RC5-Steuerung agieren und - nur als Beispiel - das Demoprogramm "Lichtverfolgung" aktivieren, und auf RC5-Code 33 das Demo "Move", später mal Linienverfolgung auf der 34 usw.
In dieser Unterroutine bleibt er solange, bis ein definierter RC5-Code kommt (ich weiß grad nicht, was dort der Off-Button für eine Codenummer hat, sagen wir mal 10). Erst bei betätigen dieser Taste wird er wieder Fernsteuerbar.

So, nun meine eigentliche Frage: Wie sieht das aus?
In meinem Handler für RC5 müsste dann vielleicht der gesamte Programmcode unter "case 32" stehen? Oder lege ich hier so etwas wie eine neue "main" hinein? Und gliedere ganz normal die restlichen Funktionen (BumpersStateChangedHandler etc) aus?
Gibt es so etwas - eine sub-main?

Leider ist mein Gesamt-Code zu lange, aber der Handler für RC5 entspricht ja ziemlich dem des Bsp-Programms.

Wenn jemand will, könnt ich die Hex oder die .C auch hochladen... Oder einen Programmteil.

Ich weiß auch, dass es einen ähnlichen Thread gibt, aber der wurde irgendwann konfus...

Danke euch schon mal :)
Und ein Frohes Beschenkt-Werden morgen!!!
Fabian

fabqu
03.01.2011, 12:25
Hmmm...
Kann mir denn dabei keiner helfen?
Oder ist momentan einfach zu viel Trouble hier im Forum?
Haben scheinbar ne ganze Menge Leute den RP6 vom Christkind bekommen :D

Gruß,
Fabian

SlyD
03.01.2011, 13:05
Ganz grob umrissen:
Du musst einfach nur eine Zustandvariable einführen und die entsprechend im RC5 Handler setzten.

robot_state = JETZT_BIN_ICH_AUTONOM;
oder
robot_state = SKLAVE_OHNE_EIGENEN_WILLEN;

;)
Oder entsprechend mehr Zustände für verschiedene Programme.

Das dann eben in der Main und im RC5 Handler abfragen (die Kontrollen sperren solange autonom) und dementsprechend das Programm in der Main ausführen.


MfG,
SlyD

fabqu
04.01.2011, 10:14
Danke Dir, SlyD!
Sag mir, wenn ich falsch liege:
Mein RC5-Handler sieht dann in etwa so aus:
case vorwärts // Taste 2 gedrückt
->Befehle für Vorwärts
break;
case ...
...
break;
case Lichtverfolgung // Code für Programmablauf "Lichtverfolgung" gedrückt
robot_state = Lichtverfolgung;
break;
...

Und dann brauche ich außerhalb des Handlers noch eine eigene Funktion für den robot_state = Lichtverfolgung, in der quasi das gesamte Beispielprogramm "Light Following" drin steht mit einer while-Schleife am ende. Diese While-Schleife wird erst beendet, wenn z.B. das RC5-Signal zum Beenden kommt!?
Oder muss im Handler oder der neuen Funktion eine sub-main stehen?

Und wie sieht denn dann die while-Schleife aus? Denn ich will ja NUR auf das RC5-Signal zum beenden des Programms hören, nicht auf alle anderen Codes!

Gruß,
Fabian