-         

Ergebnis 1 bis 3 von 3

Thema: Asuro fährt nicht nach Programm

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.02.2010
    Beiträge
    18

    Asuro fährt nicht nach Programm

    Anzeige

    Der Asuro soll fahren und wenn er wo gegen stößt aufhören zu fahren. Es leuchtet aber nur die Status led grün was mach ich falsch?
    #include "asuro.h"

    int main(void)
    {
    while(1)
    {

    if(PollSwitch()<6){
    MotorDir(FWD,FWD);
    MotorSpeed(150,150);
    StatusLED(GREEN);
    }else{
    MotorDir(BREAK,BREAK);
    MotorSpeed(0,0);
    StatusLED(RED);
    }

    }



    while(1)
    return 0;
    }

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    02.05.2010
    Ort
    München
    Beiträge
    41
    Ich bin zwar selbst neu auf dem Gebiet aber ich werde mal mitreden und versuchen dir zu helfen..

    Als erstes fehlt über dem while(1) folgendes: Init(); (dient zur initialisierung des microkontrollers.. ohne dem befehl weiß der kontroller gar nicht was er machen soll!)
    Zweitens würde ich die while-Schleife ganz unten raushauen da diese sinnlos ist und überhaupt nichts macht..

    Kurz gefasst, versuchs mal hiermit:

    #include "asuro.h"

    int main(void){

    Init();
    while(1){

    if(PollSwitch()<6){
    MotorDir(FWD,FWD);
    MotorSpeed(150,150);
    StatusLED(GREEN);
    }
    else{
    MotorDir(BREAK,BREAK);
    MotorSpeed(0,0);
    StatusLED(RED);
    }
    }

    return 0;
    }

    Das ganze müsste so eigentlich funktionieren

    MfG. mtzE

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo zusammen,

    ihr habt beide Recht und ein bisschen Unrecht.

    Das Init() ist auf alle Fälle lebenswichtig für den Asuro.
    Allerdings sollte das while(1) vor dem letzten return 0 schon drin bleiben.
    Nur muss dann noch ein ; dahinter geschrieben werden, damit es das tut was es da soll.
    Es ist nur ein 'Not-Stop' für das Programm für den Fall, dass der eigentlich laufende Teil mal aus der Schleife 'entwischt'. Dann kommt das Program nämlich NICHT zum return. Denn wohin soll es zurückspringen? Niemand weiss was so ein Controler dann machen wird. (Nur dummes Zeug wird das sein )

    Ich würde es somit so schreiben: (Das geht am besten mit [ code] vor dem Code und [ /code ] hinter dem Code. Aber die Leerzeichen in der Klammer weglassen.)
    Code:
    #include "asuro.h"
    
    int main(void)
    {
       Init ();
    
       while (1)
       {
          if (PollSwitch () < 6)
          {
             MotorDir (FWD, FWD);
             MotorSpeed (150, 150);
             StatusLED (GREEN);
          }
          else
          {
             MotorDir (BREAK, BREAK);
             MotorSpeed (0, 0);
             StatusLED (RED);
          }
       }
       
       while (1);
       return 0;
    }
    Und nun zur Funktion.
    Ich tippe darauf, dass das Init() von mtzE schon alles gerichtet hat.

    Wenn aber noch nichts läuft:
    Die Status-LED wird ja vom Programm auf grün gesetzt und der Asuro sollte mit MotorSpeed(150,150); fahren.
    Hier kann man als erstes mal die 150 auf 200 erhöhen. Mein Asuro fährt bei 150 auch nicht an. Manch anderer Asuro aber schon unter 150.

    Und das PollSwitch () < 6 schränkt natürlich die Taster ein die zum Stop führen. Taster 1, 2, 3 (sollten ja) als Wert 1, 2, 4 liefern. Erst Taster 4 würde einen Wert von 8 liefern und damit zum Stop-Teil im Programm führen. (Taster von vorne von links nach rechts gezählt. Könnte auch anderes rum sein )

    Viel Erfolg
    Gruß Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

Berechtigungen

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