-         

Ergebnis 1 bis 4 von 4

Thema: Kreise fahren mit leuchtenden LED's

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    08.09.2006
    Beiträge
    11

    Kreise fahren mit leuchtenden LED's

    Anzeige

    Hallo miteinander

    Wir haben ein kleines Programm geschrieben, womit wir mit dem Asuro einen Kreis fahren können. Sobald mann einen Taster drückt, macht der Asuro einen Kreis in die andere Richtung. (Die Motorleistung einfach umgekehrt).

    Soweit funktionierte alles gut.

    Als nächstes haben wir versucht, dass der Asuro beim nächsten (dritten mal) Tasterdruck stehen bleibt.

    Das funktionierte leider nicht.

    Dazu haben wir versucht, dass immer das BackLED leuchtet, bei dem die Motorleistung höher ist. Und am Schluss leuchtet die FrontLED und die BackLED's schalten aus.

    Auch dass funktionierte leider nicht wie geplant.

    Ein BackLED leuchtet immer, obwohl wir alles mit den BackLED's aus dem Programm entfernt haben.

    So hatten wir es, leider funktionierte es nicht wie gewünscht.

    #include "asuro.h"
    int main(void)
    {
    Init();
    MotorDir(RWD,RWD);
    MotorSpeed(200,100);
    BackLED(ON,OFF);

    while (PollSwitch()==0)
    {
    SerWrite("Ich fahre im Kreis!\n",19);
    }
    BackLED(OFF,ON)
    MotorSpeed(100,200);
    StatusLED(RED);

    while (PollSwitch()==0)
    {
    SerWrite("Kollision!\n",10);
    MotorSpeed(0,0);
    }
    }


    Falls jemand eine Lösung oder einen Tipp hat, wären wir sehr dankbar.


    Grüsse

    Duronus

    ps. Wir haben es noch nicht hingekriegt, dass der ASURO einfach einer Linie folgen kann. Hat jemand ein einfaches kurzes Programm, wobei der ASURO einer Linie folgen sollte?

    Vielen Dank

  2. #2
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    linienverfolgung steht gut in der anleitung beschreiben. geht mal euer programm nacheinander durch:
    (das nächste mal benutzt bitte den "code" button, um euren code einzufügen)

    zu beginn kommt Init, und die motoren werden eingeschaltet. in einer endlosschleife wird während der fahrt "Ich fahre im Kreis" gesendet. soewit so gut.

    dann wird die motordrehzahl umgedreht, und die statusled wird rot. und dann wird in einer endlosschleife die motorleistung abgeschaltet.... warum? eigentlich sollte hier wohl stehen, dass er senden sollte "ich fahre andersrum" oder sowas. UNTER dieser endlosschleife wird dann die leistung abgestellt.
    kleinschreibung ist cool!

  3. #3
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Hallo

    Die Funktion "main" darf NIE beendet werden weil nicht definiert ist, was dann ausgeführt wird. Deshalb sollten alle Programme mit einem while(1); enden. Nicht definiert bedeutet übrigens auch, dass wahllos irgendwelche LEDs an- oder ausgehen können.

    Dein Problem mit der Tasterabfrage ist hauptsächlich die fehlende Abfrage auf einen losgelassenen Taster! Ohne diese Abfrage schaltet ein einziger Tastendruck alle Abfragen auf einmal durch. Bei deinem Programm macht es sich beim ersten Tastendruck nicht bemerkbar weil während dem Drücken ein paar Zeichen geschickt werden die alles etwas ausbremsen. Und du läßt dann vermutlich während des Sendens den Taster schon wieder los. Versuche mal etwas in der Art:

    while (PollSwitch() == 0); //drücken
    while (PollSwitch() != 0); //loslassen

    Motoren-machen-was(); //aktion1

    while (PollSwitch() == 0); //drücken
    while (PollSwitch() != 0); //loslassen

    LEDs-machen-was(); //aktion2

    uswusw....

    Gruß

    mic

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

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    08.09.2006
    Beiträge
    11
    Vielen Dank für eure Antworten.

    Ich werde es sobald wie möglich ausprobieren und euch danach Bescheid geben.

    Nochmals Danke

    Grüsse

    Duronus

Berechtigungen

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