PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Echtzeitfähigkeitsproblem beim Robby



maxiaojie
31.01.2005, 13:56
hallo,
ich habe folgendes programmiert:

define X ad[8]
define Z byte[7]
Z=X

#loop
SYS COMNAV_STATUS
if Z>150 then gosub left
if (Z<100 and Z>0) then gosub right
SYS FWDR:SYS FWDL:SPEED_L=40:SPEED_R=40:goto loop
#right
SYS FWDR:SYS FWDL:SPEED_L=50:SPEED_R=0:goto loop
#left
SYS FWDR:SYS FWDL:SPEED_L=0:SPEED_R=50:goto loop

an AD8 habe ich einen potentiometer angeschlossen, und das problem ist:
wenn ich beim stillstand vom roboter den poti auf z.B. 80 drehe, fährt er rechts; wenn ich auch beim stillstand auf 200 drehe, fährt er links, usw.
ABER, wenn ich bei der FAHRT vom roboter den potentiometer drehe und die fahrrichtung vom roboter ändern möchte, lässt der roboter sich nicht links oder rechts drehen.
woran kann das problem liegen?
danke im voraus.

mfg
ma

wiluna
31.01.2005, 14:29
Und in welcher programmiersprache bitte schön??????? :frown:

PicNick
31.01.2005, 14:39
Kenn die Sprache auch nicht. aber wenn du "gosub" sagst, müßte dann nicht sowas wie "return" kommen ?
(bei #left / #right)
mfg

GaronG
31.01.2005, 14:52
Richtig Picnick,
entweder goto .... , oder gosub ... return

MfG
GaronG

GaronG
31.01.2005, 14:57
Hallo maxiaojie

Du solltest die Anweisung Z = X INNERHALB deiner Schleife haben, damit Z auch bei jedem Durchgang aktualisiert wird.

MfG
GaronG

wiluna
31.01.2005, 15:06
hallo,
ich habe folgendes programmiert:

Kenn die Sprache auch nicht
Das ist aber lustig =P~ Kennst den Namen der Sprache nicht in der du Programmierst

Trabukh
31.01.2005, 15:14
Ähm, maxiaojie und PicNick sind 2 verschieden Leute... *lol*
Tja Herr Einstein, wieder mal etwas verwirrt? *g*
Bitte nicht negativ auffassen! Just kidding... :-)

Gruß, Trabukh

PicNick
31.01.2005, 15:41
Bei manchen Programmen, die ich schon geschrieben habe, hätt's aber schon sein können, daß beide Aussagen von mir kommen :-b

wiluna
31.01.2005, 15:55
Oppla!!!1 Das habe ich woll uebersehen!
Aber ein Genie ist halt nicht kleinkarirt (richtig geschrieben ???)

PicNick
31.01.2005, 16:01
kariert kommt, glaub ich, von "karo" deshalb schreibt man's auch mit "ie"
aber mit der neuen Rechtschreibung kenn ich mich nicht aus, ich kann die alte noch nicht. :Haue

OlliH
31.01.2005, 22:00
Das is das Basic vom Robby, sollte sich ja fast von selbst erklären wenn es im Robby Forum steht :-s

Naja, auf jedenfall hast du die Zeile Z = X vor deiner Schleife geschrieben, das muss in die Schleife rein, und bei gosub musst du return nehmen um zurückzukommen. Oder hier nimmst du einfach anstatt gosub goto, dann passts auch.

Also das Programm sollte dann glaub ich so passen:

define X ad[8]
define Z byte[7]

#loop
Z=X
SYS COMNAV_STATUS
if Z>150 then goto left
if (Z<100 and Z>0) then goto right
SYS FWDR:SYS FWDL:SPEED_L=40:SPEED_R=40:goto loop
#right
SYS FWDR:SYS FWDL:SPEED_L=50:SPEED_R=0:goto loop
#left
SYS FWDR:SYS FWDL:SPEED_L=0:SPEED_R=50:goto loop