-         

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

Thema: Linker motor läuft immer...Hilfe!!!

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    17.10.2009
    Beiträge
    62

    Linker motor läuft immer...Hilfe!!!

    Anzeige

    Hallo Comunity,

    Ich habe endlich meinen asuro aufgebaut. Beim Selbsttest ging alles reibungslos aber wo ich ihn das erste mal programmiert habe ( habe nur programmiert dass StatusLed rot leuchten soll ) war die enttäuschung groß, weil sich der linke motor gedreht hat (vorwäts).
    Bitte helft mir wäre sehr dankbar!!!

    Gruß Chris

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Init() vergessen? Zeige uns dein Programm, wenn du Glaskugelsprüche vermeiden willst.

    aber wo ich ihn
    aber als... (sorry;)

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Wenn der Selbsttest geht scheint's ja nicht an der Hardware zu liegen. Du müsstest uns also schon Deinen Code zeigen, damit wir Dir helfen können...

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Und wie soll man dir helfen?
    Wenn ich dir schreibe das der Fehler in Zeile 34 ist, wirst du es mir nicht glauben.
    Wenn es mit dem Selbsttest funktioniert, dann musst du den Fehler im Code selbst suchen oder ihn hier hereinstellen.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    17.10.2009
    Beiträge
    62
    Das ist ein neues programm:

    Code:
    #include "asuro.h"
    
    int main(void)
    {
        unsigned char tasterzustand;
    	Init();
    	tasterzustand=PollSwitch();
    	while (1)
    	StatusLED(RED);
    	sleep(255);
    	BackLED(ON,ON);
    	Sleep(255);
    	FrontLED(ON);
    	sleep(255);
    	
    	return 0;
    
            if (tasterzustand > 7)  // Hier macht er es nur wenn Taster K1 bis K3 gedrückt werden und zwar in beliebiger Kombination, d.h. auch alle zusammen. (Siehe Tabelle in deinem letzten Thread. einfach addieren)
            {
            MotorDir(RWD,BREAK);
    		MotorSpeed(120,0);
            }
    
            else if (tasterzustand > 0 && tasterzustand <= 7) // analog zu oben nur hier K4 bis K6
            {
            MotorDir(BREAK,RWD);
    		MotorSpeed(0,120);
            }
    
            else // Hier ist keiner gedrückt (tasterzustand == 0)
            {
            MotorDir(RWD,RWD);
            MotorSpeed(120,120);
            {
        }
        return 0;
    }
    sry hab ich vergessen...

    Edit: Ich habs rübergeflasht und da hat er noch das selbe gemacht wie vorher.

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Die while schleife funktioniert nicht denke ich. Jedenfall fehlt dort einer "{" klammern. Wie du das compiliert gekriegen hat ohne warnung ist mich einer rädsel.

    Die erste "return 0;" gehört dort im mitten auch nicht. Die "return 0;" am ende deines program reichtst.

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.08.2007
    Ort
    Delmenhorst
    Alter
    32
    Beiträge
    731
    Die while schleife funktioniert nicht denke ich. Jedenfall fehlt dort einer "{" klammern. Wie du das compiliert gekriegen hat ohne warnung ist mich einer rädsel.
    Klar geht sowas! Er führt dann in einer unendlichen Schleife den nächsten Befehl nach while aus. "while(1) 1+1;" ist z.B. auch gültig, aber sinnlos.

    Die erste "return 0;" gehört dort im mitten auch nicht. Die "return 0;" am ende deines program reichtst.
    Stimmt, aber in seinem Fall kommt er da eh erst garnicht hin.

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Du hast recht. Es wurde immer beim
    Code:
    while (1) StatusLED(RED);
    stecken bleiben. Das obene gepostete program kan aber nicht richtig compiliert sein weil es nicht das gleichen anzahl von "{" und "}" klammern hat. Und irgendwie muss sein Asuro an die Motorspeed befehl ran gekommen sein. Sonnst geht das linken rad nicht forwärts. Oder NXTman hat seiner Linkern Rad beöbachtung gemacht auf basis einer altere version seines Program. (vieleicht ohne das zu wissen)

  9. #9
    Erfahrener Benutzer Begeisterter Techniker Avatar von Osser
    Registriert seit
    31.10.2006
    Ort
    Köln
    Alter
    47
    Beiträge
    387
    Hi NXTman,

    wie meine Vorredner schon sagten, der Kode stimmt so nicht.

    Hab deinen Kode überarbeitet, syntaktisch und indent, aber nicht die Funktion an sich. Habe drei Stellen auskommentiert, da das semantich/syntaktisch falsch war.
    Code:
    #include "asuro.h"
    
    int main(void) {
      uint8_t tasterzustand;
      Init();
      tasterzustand = PollSwitch();
      while (1) {
        StatusLED(RED);
        sleep(255);
        BackLED(ON,ON);
        Sleep(255);
        FrontLED(ON);
        sleep(255);
       
        //return 0;            // OM> das darf hier nicht stehen!!
    
        if (tasterzustand > 7) { 
          // Hier macht er es nur wenn Taster K1 bis K3 gedrückt werden und 
          // zwar in beliebiger Kombination, d.h. auch alle zusammen. (Siehe 
          // Tabelle in deinem letzten Thread. einfach addieren)       
          MotorDir(RWD,BREAK);
          MotorSpeed(120,0);
        } else if (tasterzustand > 0 && tasterzustand <= 7)  {
          // analog zu oben nur hier K4 bis K6
          MotorDir(BREAK,RWD);
          MotorSpeed(0,120);
        } else { 
          // Hier ist keiner gedrückt (tasterzustand == 0)
          MotorDir(RWD,RWD);
          MotorSpeed(120,120);
          // {           // OM> das darf hier nicht stehen!
        }
      }//while(1)... // OM> das hat gefehlt
        
      return 0;
    }
    Gruss,

    O.

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    17.10.2009
    Beiträge
    62
    Hab den selbsttest nochmal draufgeladen und da ist mir aufgefallen dass sich der linke Motor auch immer vorwärts drehen will aber wennich ihn ne sekunde festhalt(das Rad)bleibt er stehen. Woran könnte das liegen vlt ein falscher wiederstand?

    Ich bin froh über die vielen antworten aber es hat mir bis jetzt leider noch nichts gebracht.

    Gruß Chris

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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