C Roboter Programmier Problem
-
Hallo
Ich habe mal wieder ein Problem
Wir sollen in der Schule einen Mindstorms RCX Roboter programmieren,der auf einem ovalen ,schwarzen Kreis fährt.ddie folie neben dem schwarzrn kreis ist weiß.also die sensoren sollen den bereich absuchen und so soll der roboter nur auif dem schwarzen kreis fahren.mein problem ist aber nun die endlosschleife in meinem programm.immer wenn ich sie einbauen will,sagt mein compiler das irgendwas mit void nicht zu meinem text passt.ich benutze interactive c.
hier das programm ohne endlosschleife(dahinter immer meine gedanken zu dem was ich geschrieben habe):
int main() { if ((light (1) > 150) && (light (3) > 150))//hier sind beide sensoren auf schwarz { motor (1,35); motor (3,35); } else//jetzt kommt ein sensor auf weiss if ((light (1) > 150) && (light (3) < 150)) { motor (1,-35);//motor soll erstmal zurckfahren motor (3,-35); msleep (200L);//dann soll er anhalten motor (1,15);//und dann ne kurve fahren^^ motor (3,35); } else//jetzt war aber nicht der eine sensor auf wei,sondern der andere.schritt s wird also uebersprungen und man kommt zudem hier if ((light (1) < 150) && (light (3) > 150)) { motor (1,-35);//wieder stück zurück fahren motor (3,-35); msleep (200L);//kurz anhalten motor (1,35);//ne kurve in die andere richtung fahren motor (3,15); } ao(); }
und hier mit schleife und fehler;):
int main() { while((motor(1,35)) && (motor(3,35))) { if ((light (1) > 150) && (light (3) > 150))//hier sind beide sensoren auf schwarz { motor (1,35); motor (3,35); } else//jetzt kommt ein sensor auf weiss if ((light (1) > 150) && (light (3) < 150)) { motor (1,-35);//motor soll erstmal zurckfahren motor (3,-35); msleep (200L);//dann soll er anhalten motor (1,15);//und dann ne kurve fahren^^ motor (3,35); } else//jetzt war aber nicht der eine sensor auf wei,sondern der andere.schritt 2 wird also uebersprungen und man kommt zudem hier if ((light (1) < 150) && (light (3) > 150)) { motor (1,-35);//wieder stck zurck fahren motor (3,-35); msleep (200L);//kurz anhalten motor (1,35);//ne kurve in die andere richtung fahren motor (3,15); } } ao(); }
ich hoffe jemand hier kann mir weiterhelfen
-
hi,
das guckt sich so bestimmt kaum einer an. mach' den quelltext bitte in code-tags, dann geht auch die formatierung nicht vor die hunde...
-
rangernr15 schrieb:
Hallo
Ich habe mal wieder ein Problem
Wir sollen in der Schule einen Mindstorms RCX Roboter programmieren,der auf einem ovalen ,schwarzen Kreis fährt.ddie folie neben dem schwarzrn kreis ist weiß.also die sensoren sollen den bereich absuchen und so soll der roboter nur auif dem schwarzen kreis fahren.mein problem ist aber nun die endlosschleife in meinem programm.immer wenn ich sie einbauen will,sagt mein compiler das irgendwas mit void nicht zu meinem text passt.ich benutze interactive c.
hier das programm ohne endlosschleife(dahinter immer meine gedanken zu dem was ich geschrieben habe):
int main() { if ((light (1) > 150) && (light (3) > 150))//hier sind beide sensoren auf schwarz { motor (1,35); motor (3,35); } else//jetzt kommt ein sensor auf weiss if ((light (1) > 150) && (light (3) < 150)) { motor (1,-35);//motor soll erstmal zurckfahren motor (3,-35); msleep (200L);//dann soll er anhalten motor (1,15);//und dann ne kurve fahren^^ motor (3,35); } else//jetzt war aber nicht der eine sensor auf wei,sondern der andere.schritt s wird also uebersprungen und man kommt zudem hier if ((light (1) < 150) && (light (3) > 150)) { motor (1,-35);//wieder stück zurück fahren motor (3,-35); msleep (200L);//kurz anhalten motor (1,35);//ne kurve in die andere richtung fahren motor (3,15); } ao(); } und hier mit schleife und fehler;): int main() { while((motor(1,35)) && (motor(3,35))) { if ((light (1) > 150) && (light (3) > 150))//hier sind beide sensoren auf schwarz { motor (1,35); motor (3,35); } else//jetzt kommt ein sensor auf weiss if ((light (1) > 150) && (light (3) < 150)) { motor (1,-35);//motor soll erstmal zurckfahren motor (3,-35); msleep (200L);//dann soll er anhalten motor (1,15);//und dann ne kurve fahren^^ motor (3,35); } else//jetzt war aber nicht der eine sensor auf wei,sondern der andere.schritt 2 wird also uebersprungen und man kommt zudem hier if ((light (1) < 150) && (light (3) > 150)) { motor (1,-35);//wieder stck zurck fahren motor (3,-35); msleep (200L);//kurz anhalten motor (1,35);//ne kurve in die andere richtung fahren motor (3,15); } } ao(); }
ich hoffe jemand hier kann mir weiterhelfen
Wenn es darum geht
while((motor(1,35)) && (motor(3,35)))
würde ich jetzt mal sagen, dass die motor funktion keinen wert zurückgibt, oder?
-
jo,stimmt
aber mien problem is wie ich meinen fehlerfreien erstent ext in ne endlosschleife kriegen soll.wenn mir das wer sagen könnte wär super.
-
na wenn du ne endlosschleife willst dann mach doch
while( true ) { ... }
Wenn du deinen Schleifenkopf so machen willst wie du da hattest dann musst du mal gucken ob es funktionen gibt die den Motorstatus abfragen und nicht setzen? Das muss ja in irgendeiner Dokumentation oder so stehen.
schirrmie