-         

Ergebnis 1 bis 4 von 4

Thema: Auf Tastendruck reagieren...

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    28.08.2008
    Beiträge
    29

    Auf Tastendruck reagieren...

    Anzeige

    Hallo,
    ich habe ein kleines Programm geschrieben, nur tut der Asuro nicht was ich will. Er reagiert einfach nicht wenn ein Taster gedrückt wird...
    Hier das Programm, vielleicht erkennt ihr einen Fehler
    Code:
    #include "asuro.h"
    int main(void) {
    
    unsigned char taste;
    
    Init();
    
    FrontLED(ON);
    MotorDir(FWD,FWD);
    MotorSpeed(150,140);
    
    taste = PollSwich();
    if (taste>0) {MotorSpeed(0,0);}
    
    while(1);
    return 0;
    }
    Verbesserungsvorschläge etc...sind gerne erwünscht^^
    Vielen Dank im Voraus.
    Mfg

  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
    Die Tastenabfrage muss IN die Endlosschleife! Außerdem heißt die Funktion PollSwitch()...

    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-Spezialist
    Registriert seit
    02.01.2008
    Alter
    26
    Beiträge
    239
    hallo

    das hängt damit zusammen, dass dieses programm nur einmal durchlaufen wird. dh wenn du nicht gleich am anfang einen taster drückst wird er es nie erkennen.

    am einfachsten ist es, wenn du einfach eine endlosschleife um die tasterabfrage machtst:
    Code:
    #include "asuro.h"
    int main(void) {
    
      unsigned char taste;
    
      Init();
      while(1)
      {
        FrontLED(ON);
        MotorDir(FWD,FWD);
        MotorSpeed(150,140);
    
        taste = PollSwich();
        if (taste>0) {MotorSpeed(0,0);}
      }
      while(1);
      return 0;
    }
    somit wird der teil, der von der endlosschleife umschlossen ist immer wieder ausgeführt

    da aber bei laufendem motor pollswitch öfters falsche werte liefert sollte man es mindestens zwei mal aufrufen:
    Code:
    #include "asuro.h"
    int main(void) {
    
      unsigned char taste;
    
      Init();
      while(1)
      {
        FrontLED(ON);
        MotorDir(FWD,FWD);
        MotorSpeed(150,140);
    
        taste = PollSwich();
        if (taste==PollSwitch() && taste>0) {MotorSpeed(0,0);}
      }
      while(1);
      return 0;
    hier wird die if-abfrage nur dann TRUE, wenn Pollswitch zweimal hintereinander den selbenwert liefert (taste == PollSwitch()) und taste >0


    so, ich glaube das sollte genügen
    mfg hai1991

    P.S.: wer großbuchstaben oder rechtschreibfehler findet darf sie behalten

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    28.08.2008
    Beiträge
    29
    Vielen Dank, ich werds gleich mal ausprobieren und nochmal bescheid geben obs funktioniert!
    Mfg

Berechtigungen

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