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


Anmelden zum Antworten