Problem mit While(true) - Schleife

Rund um die Version 1.5 und 2.0
NQC und andere Software für den RCX

Moderator: Moderatoren

rcxseminarfach
Weniger als 15 Beiträge
Weniger als 15 Beiträge
Beiträge: 12
Registriert: 3. Dez 2010 13:53

Problem mit While(true) - Schleife

Beitragvon rcxseminarfach » 12. Apr 2011 22:28

Hi,
ich bins mal wieder :D
ich hab nun das Problem, dass in meiner While(true)-Schleife ein einziger Befehl leider mehrmals ausgeführt wird, obwohl er pro Schleifendurchlauf nur einmal stattfinden soll.

Das ist mein Code:

task check_sensor() //Task für Sensor 3
{
while(true)
{

if (SENSOR_3 > GRENZE_SW_S3 )
{ test1+=1;}

if (SENSOR_2 > GRENZE_SW_S2 )
{ test2+=1;}

Differenz=test1-test2;


if (Differenz>20)

{OnFwd(OUT_C); Wait(TURNTIME_OUT_C); Off(OUT_C) ;Differenz=0; break; continue;}

if (Differenz<-20)

{OnFwd(OUT_C); Wait(TURNTIME_OUT_C); Off(OUT_C) ;Differenz=0;break; continue;}

}
}



Hoffe mein Text ist verständlich. Insgesamt gehts darum dass der Roboter mit meinen selbst gebastelten Zählern checken soll ob er geradeaus fährt. (Er fährt über einen Strichcode)
Wenn also die Differenz zu groß ist, soll er EINMAL den OUT_C für die TURNTIME_OUT_C drehen lassen, er dreht aber fast ununterbrochen.


Ich habe schon probiert, ein "break; continue;" dahinter zu setzen, aber dann durchläuft er die ganze Schleife nur ein einziges mal.


Liebe grüße,

Julian

Benutzeravatar
NXT pro
Super-Enorm-Viel-Schreiber
Super-Enorm-Viel-Schreiber
Beiträge: 930
Registriert: 27. Sep 2010 21:38

Re: Problem mit While(true) - Schleife

Beitragvon NXT pro » 13. Apr 2011 04:28

Du hast es so gemacht, dass der Motor C die TURNTIME drehen soll, wenn die Differenz über 20 oder unter 20 ist.
Da das Auslesen der Sensoren sehr schnell geht, kommt er gleich zu den Verzweigungen, die bei dir auf jeden Fall true sind.
Wenn ich dein Problem richtig verstanden habe, musst du einfach die untere Verzweigung weglassen.
Ausserdem gibt es extra ein Fenster für Code:
EDIT: Ausserdem setzt du ja in der ersten Verzweigung die Differenz auf 0, sodass die Bedingung schon wieder erfüllt ist.
Real coders don't comment their code - it was hard to write, it should be hard to understand!

rcxseminarfach
Weniger als 15 Beiträge
Weniger als 15 Beiträge
Beiträge: 12
Registriert: 3. Dez 2010 13:53

Re: Problem mit While(true) - Schleife

Beitragvon rcxseminarfach » 13. Apr 2011 08:12

Hi,

er soll nur was machen wenn die Differenz über 20 oder unter - 20 ist.
Ich habe bewusst nicht den Betrag genommen denn ich will ja zwischen + und minus 20 unterscheiden.


Edit:hat sich erledigt. ich weiß zwar nicht mehr wo der Fehler lag aber es funktionierte.

Gruß Julian


Zurück zu „Robotics Invention Systeme“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss