PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Generelle Frage zur Programmierung (RobbyRP5)



BananenFresser
06.11.2005, 18:28
So hab zum Geburtstag nun den Robby RP5 begommen, und es macht auch einen wirklich großen Spaß den Roboter zu programmieren und so waren dann auch schnell die ersten Programme geschrieben und ausprobiert. Alles Bestens. Sobald ich allerdings versuche mehre Sachen miteinander zu koppeln stoße ich an meine Grenzen. So wollte ich zum Bsp. den autonomen Betrieb (mit ACS) durch eine IR-Fernbediehnung unterbrechen und gegebenen Falls wieder aufnehmen lassen. Dies Funktioniert bei meinem Programmcode aber nicht wirklich und ich denke, das dies an meinen verwendeten Befehlen liegt, da ich noch nicht so sehr viel programmiert habe. Es wäre also sehr nett wenn ihr mir ein paar Tipps geben könntet wo ich zB. Tutorials oder so zu diesem Thema finde oder mir ggf. sogar sagen könntet wo der Fehler in meinem Programmcode steckt.


#Loop
if ifautonom=1 then gosub autonom
gosub IRDAT
Goto Loop

#IRDAT
pause 2:SYS COMNAV_STATUS
if IR_F =off then goto IRDAT
gosub GET_IRDATA:goto EX_COMMAND

#EX_COMMAND
if LBYTE=2 then ifautonom=1
if LBYTE=3 then ifautonom=0
IR_F =off
goto Loop

#autonom
pause 5:SYS COMNAV_STATUS
'--------- LEDs ansteuern --------------------
if ACSL_F=on then gosub LED4ON else gosub LED4OFF
if ACSR_F=on then gosub LED1ON else gosub LED1OFF
'--------- AUSWEICHMANÖVER EINLEITEN ---------
if (ACSL_F and ACSR_F)=on then goto rotate
if ACSL_F=on then goto move_right
if ACSR_F=on then goto move_left
SYS FWDR:SYS FWDL:SPEED_L=255:SPEED_R=255:goto Loop

'-------- AUSWEICHEN NACH RECHTS -------------
#move_right
SPEED_R=0:SPEED_L=255:goto Loop
'-------- AUSWEICHEN NACH LINKS -------------
#move_left
SPEED_L=0:SPEED_R=255:goto Loop
'---------- ROTIEREN --------------------
#rotate
SPEED_L=150:SPEED_R=150:SYS ROTR:goto Loop
'----------------------------------------------


So kann ich meinen Robby zwar per Fernsteuerung starten aber leider nicht mehr stoppen :(

PS: gibt es eine Möglichkeit mehrere Programme zu schreiben und vom Robby bearbeiten zu lassen (d.h. das Hauptprogramm ruft eine andere Datei auf), ich kenne dies aus PHP mit dem Befehl "include ..."


mfg
BananenFresser

PicNick
06.11.2005, 18:36
Für RP5 gibt's bessere, doch was mir auffällt ist, daß du keine "return" verwendest.

corone
06.11.2005, 21:55
also, andere dateien aknnst du damit nicht aufrufen lassen. und für das stoppen... vielleicht solltest du ihn per ruf stoppen können? also wenn du ne abfrage einbaust, die den schallpegel misst. und wenn er hoch genug ist, stoppt er eben *g*


ach ja, und danke für den quellcodeschnipsel. könntest du vll. noch mal den gesamten code posten? mit treibern und portdefinition mein ich. den würd eich gern mal testen (hab den kleinen auch^^).


gruß
corone

jonas
07.11.2005, 17:44
ich bin hier zwar auch nicht der programmier-murph, aber ich glaub du hast auch nirgends einen befehl, wo du die motoren wieder ausschaltest.
wenn du die nämlich irgendwo im programm einschaltest bleiben die auch an bis der befehl zum ausschalten kommt.
bei manchen anderen motorsteuerungen ist das glaub ich anders.
in diesem sinne...

Dirk
07.11.2005, 19:05
Hallo BananenFresser,

wichtig ist, NIE in Unterprogramme heraus- oder hineinzuspringen (mit goto)!!!
Es muss IMMER SO aussehen, sonst gibt es sehr merkwürdige Programme, die nicht tun, was man will:

#Hauptproggi
' ... tut irgendwas ...
gosub Unterproggi_1 'Verzweigt ins Unterproggi_1
' ... hier gehts dann nach dem Unterproggi_1 weiter!
gosub Unterproggi_2 'Verzweigt ins Unterproggi_2
' ... hier gehts dann nach dem Unterproggi_2 weiter!
end 'Hier ist ENDE des Hauptproggis

'-------------------------------------------------------------
'Ab hier stehen die Unterproggis:
#Unterproggi_1
' ... tut etwas im Unterprog!
return

#Unterproggi_2
' ... tut etwas im Unterprog!
return

Wenn Du eine Endlos-Schleife proggen willst, geht das am besten im Hauptprogramm:

#Schleife
'... tut etwas ...
gosub Unterproggi_1 'Verzweigt z.B. ins Unterproggi_1
' ... tut noch mehr ...
goto Schleife

Nur mit solchen klaren Strukturen wird ein Prog das tun, was Du willst!

Gruß Dirk