-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: Hilfe Programm

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    22
    Beiträge
    661

    Hilfe Programm

    Anzeige

    Ich habe ein Problem mit einem selbst geschriebenen Übungsprogramm.
    eigentlich solte mein ich einen Schalter drücke ein Motor ausschalten und sich
    die Status Anzeigen verändern. Könnt ihr mal schauen wo das Problemm liegt und es mir erklären.

    danke im Vorraus. ; )



    Code:
    #include "asuro.h"
    
    int main(void)
    {
    	Init();
    MotorDir(FWD,FWD);
    MotorSpeed(250,250);
    StatusLED(GREEN);
    FrontLED(OFF);
    BackLED(OFF,OFF);
    {
    
    while (PollSwitch()==0)
    { 
    {
    MotorDir(FWD,FWD);
    MotorSpeed(200,0);
    StatusLED(YELLOW);
    FrontLED(OFF);
    Sleep(255);
    BackLED(ON,ON);
    while(1);
    }
    }
    }
    while(1);
    return 0;
    }

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Was macht dein Programm?
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    29.07.2005
    Alter
    26
    Beiträge
    128
    hey
    so sollte es funktionieren !!!
    hast n par while zu viel drin

    Code:
    #include "asuro.h"
    
    int main(void)
    {
       Init();
    
    while (1)
    	{	
    		if (POllswitch==0){
    		MotorDir(FWD,FWD);
    		MotorSpeed(200,0);
    		StatusLED(YELLOW);
    		FrontLED(OFF);
    		Sleep(255);
    		BackLED(ON,ON);
    		}
    
    		else{
    		MotorDir(FWD,FWD);
    		MotorSpeed(250,250);
    		StatusLED(GREEN);
    		FrontLED(OFF);
    		BackLED(OFF,OFF);
    		}
    	
    	}
    
    	return 0;
    }

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    22
    Beiträge
    661
    Zitat Zitat von Hubert.G
    Was macht dein Programm?
    es soll nur mit einem Rad fahren wenn ein Taster gedrückt ist .

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    22
    Beiträge
    661
    Zitat Zitat von listner
    hey
    so sollte es funktionieren !!!
    hast n par while zu viel drin

    Code:
    #include "asuro.h"
    
    int main(void)
    {
       Init();
    
    while (1)
    	{	
    		if (POllswitch==0){
    		MotorDir(FWD,FWD);
    		MotorSpeed(200,0);
    		StatusLED(YELLOW);
    		FrontLED(OFF);
    		Sleep(255);
    		BackLED(ON,ON);
    		}
    
    		else{
    		MotorDir(FWD,FWD);
    		MotorSpeed(250,250);
    		StatusLED(GREEN);
    		FrontLED(OFF);
    		BackLED(OFF,OFF);
    		}
    	
    	}
    
    	return 0;
    }




    Es ist mir schon klar das ich einfach if nehmen könnte aber ich übe
    mich gerade mit dem Programmieren und im übungsheft des Asuros Steht
    ein Programm und ich wolte nach dessen Vor bild ein Programm schreiben .


    Hier ist mal das Programm : (Danke das du dich bemüht hast )


    Code:
    9.1.5. Schleifen
    Schleifen dienen dazu, Anweisungen mehrmals auszuführen.
    In der “while”-Schleife wird eine Bedingung ausgewertet. Ist die Bedingung wahr, so wird der
    Anweisungsblock ausgeführt und die Bedingung erneut geprüft, bis diese falsch wird. Dannach
    wird das Programm hinter dem Anweisungsblock fortgesetzt.
    while( Bedingung)
    Anweisungsblock
    Beispiel:
    #include “asuro.h”
    int main(void) {
    Init ()
    MotorDir(FWD,FWD); // Beide Motoren auf vorwärts
    MotorSpeed(120,120); // Beide Motoren etwa halbe Kraft voraus
    StatusLED(GREEN); // Status-Leuchtdiode auf grün schalten
    while (PollSwitch()==0) { // Solange keine Kollision erfolgte...
    SerWrite(“Alles OK!\n”,10); // ... Euphorie verbreiten
    }
    MotorSpeed(0,0); // Kollision! Sofort anhalten!
    StatusLED(RED); // Statusleuchtdiode rot schalten
    while (1) {
    SerWrite(“Aua!\n”,5); // und weinen!
    }
    }

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Ich wollte wissen was dein Programm macht, nicht was es machen soll.
    Ich nehme mal an das es nicht auf die Taste reagiert.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    22
    Beiträge
    661
    Zitat Zitat von Hubert.G
    Ich wollte wissen was dein Programm macht, nicht was es machen soll.
    Ich nehme mal an das es nicht auf die Taste reagiert.
    es ist so wenn ich die Taste von anfang die Taste drücke dreht nur ein Rad
    und wenn nicht drehen beide räder und selbst wenn ich die Taste wider los
    lasse dreht nur ein Rad undsonst reagiert er nicht auf tasten

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Damit hast du dir die Antwort ja schon selbst gegeben.
    Du startest, die Motoren drehen, Taste nicht gedrückt, und damit läuft es in das letzte while und kann nicht mehr heraus.
    Wenn du die Taste gedrückt hast, läuft nur ein Motor, dann wieder in das while usw.
    Code:
    #include "asuro.h"
    
    int main(void)
    {
       Init();
    
    while (1){
    MotorDir(FWD,FWD);
    MotorSpeed(250,250);
    StatusLED(GREEN);
    FrontLED(OFF);
    BackLED(OFF,OFF);
    
    
    while (PollSwitch()==0)
    {
    MotorDir(FWD,FWD);
    MotorSpeed(200,0);
    StatusLED(YELLOW);
    FrontLED(OFF);
    Sleep(255);
    BackLED(ON,ON);
    }
    return 0;
    }
    Du musst die Programmteile so anlegen, das sie immer wieder durchlaufen werden.
    Das if von "listner" finde ich besser lesbar.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Zitat Zitat von Martinius11
    Zitat Zitat von Hubert.G
    Ich wollte wissen was dein Programm macht, nicht was es machen soll.
    Ich nehme mal an das es nicht auf die Taste reagiert.
    es ist so wenn ich die Taste von anfang die Taste drücke dreht nur ein Rad
    und wenn nicht drehen beide räder und selbst wenn ich die Taste wider los
    lasse dreht nur ein Rad undsonst reagiert er nicht auf tasten
    Gennau

    Von anfang an kriegt er das commando "volle fahrt voraus"

    Wenn du von anfang einer taster eindruckt wird er nicht in dem ersten while-schleife gehen weil Pollswitch nicht gleich 0 ist. Aber dan kommt er in dem dritten while-schleife (am ende, gleich vor "return 0;" )wo er "immer nichts" macht. Also, geht er immer mit voller fahrt voraus.

    Wenn du keiner taster eindruck gebt, geht er in die erste while-schleife. In diesen ersten while-schleife muss er forwärts fahren aber mit dem rechter motor im stillstand. Also geht er rund. Am ende diesen while-schleife steht noch einer 'immer nichts' while-schleife. (der zweite, aber auf einer niedriger niveau) Also bleibt er da immer stecken in seiner rundgang auf die stelle. Er reagiert auch nicht mehr auf einer spätere taster eindruck weil er beim "immer nichts" auch kein tastermessungen macht.

    Listner hat dein program gut bearbeitet, leider nur mit ein schreibfehler ... das nicht compiliert wird. [-X

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    22
    Beiträge
    661
    also wenn ich will das er es öffters ausführt muss ich hinter return eine
    größere Zahl setzen.
    oder und listener hat wirklich gute ideen aber ich wills halt zur übung mit while for do etc. machen .

    Grossen Dank an Alle
    euer Martinius

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •