-         

Ergebnis 1 bis 7 von 7

Thema: Was ist an diesem Programmcode falsch?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    04.11.2006
    Beiträge
    15

    Was ist an diesem Programmcode falsch?

    Anzeige

    Hallo,
    ich habe mich jetzt einmal daran gemacht einen kleinen Programmcode zu machen. Dieser Programmcode soll dazu dienen das der Roboter normal mit 150 fährt und bei einer Kollision rückwärts fahren soll:

    ///////////////////////////////////////////
    // Asuroprogramm Version 1 // 15.11.2006 //
    // Von Jens // Erstentwicklung//
    ///////////////////////////////////////////

    #include "asuro.h"

    unsigned char taste;

    /////////////////////////////////////////////
    int main(void)
    {
    Init();
    taste = PollSwitch();
    if (taste>0)
    {
    MotorDir(RWD,RWD);
    MotorSpeed(100,100);
    StatusLED(RED);
    BackLED(OFF,OFF);
    }
    else
    {
    MotorDir(FWD,FWD);
    MotorSpeed(150,150);
    StatusLED(GREEN);
    BackLED(ON,ON);
    }
    while(1);
    return 0;
    }




    So, nach dem ich dieses Programm geschrieben hatte, flashede ich es auf den Asuro. Doch dieser fährt dauernd rückwärts, auch ohne Kollision und auf gar keinen Fall vorwärts! Was ist an diesem Programmcode falsch? .. ist meine Frage.
    Danke und MFG
    JensD

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    (1)die if abfrage muss in die while schleife rein
    (2) so wird der asuro dann (wenn du die if abfrage ind er while schleife drinn hast) zwar an der wand annhalten, aber dann wider gegen die wasn fahren, al swollte er sie durchbrechen

    mfg EDH

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    04.11.2006
    Beiträge
    15
    Wie mache ich die If-Abfrage in die while-Schleife?

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    so ungefähr :

    Code:
    #include "asuro.h"
    
    unsigned char taste;
    
    /////////////////////////////////////////////
    int main(void)
    {
    Init();
    while(1) {
    taste = PollSwitch();
    if (taste>0)
    {
    MotorDir(RWD,RWD);
    MotorSpeed(100,100);
    StatusLED(RED);
    BackLED(OFF,OFF);
    }
    else
    {
    MotorDir(FWD,FWD);
    MotorSpeed(150,150);
    StatusLED(GREEN);
    BackLED(ON,ON);
    }
    }
    return 0;
    }
    mfg EDH

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    04.11.2006
    Beiträge
    15
    Das klappt bei mir nicht jetzt fährt er nur vorwärts aber die Taster machen auf Berührung nichts.(??)
    Gruß JensD

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    (1) vieliecht schreibst du mal konkret was der asruo machen soll?
    (2) ruf pollswitch mehrmals hinterneindaner auf

    mfg EDH

  7. #7
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    1. bitte nutze den CODE Button um deinen Programmcode zu posten.
    2. Du Musst ein Programm machen, was ungefähr so aussieht:
    Code:
    int tastegedrueckt=0;
    int main(void){
    init();
    While(1){
    
    PollSwitch();
    PollSwitch(); //Zum ausschliessen von falschen Werten
    PollSwitch();
    
    tastegedrueckt=PollSwitch();
    
    if (tastegedrueckt!=0){ //Wenn eine Taste gedrückt wurde...
    
    MotorDir(RWD,RWD);
    MotorSpeed(150,150); //Dann fahre rückwärts.
    
    }
    else{ //ansonsten...
    MotorDir(FWD,FWD);
    MotorSpeed(150,150);
    }
    
    return 0;
    
    }
    könnte sein, dass da was nich ganz 100%ig ist, also erstmal durchchecken was der compiler so sagt.

    Sowie eine taste gedrückt wurde, wird die variable tastegedrueckt nicht mehr 0 sein. (kann aber sein, dass die funktion pollswitch() einen falschen wert ausgibt, dann hast du leider pech...). wenn die variable nicht mehr 0 ist wird er rückwärts fahren. nachteil: er wird dauern wieder vor die wand fahren, weil sowie er ein stückchen rückwärts gefahren ist ist ja die variable wieder 0 und er fährt wieder vorwärts... man könnte natürlich auch noch eine verzögerung mit sleep() einbauen, aber das überlasse ich dir =)
    kleinschreibung ist cool!

Berechtigungen

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