mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tasten auswerten!


Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen ich glaube ich sehe im Augenblick den Wald vor lauter 
Bäumen nicht! Ich möchte möchte eine doppelt belegte Taste auswerten. 
D.h. die Taste hat die Funktion start/stop. Den Zustand des Tasters 
bekomme ich entprellt zur Verfügung gestellt von einer fertigen Routine. 
Wie kann ich jetzt am besten erkennen ob es sich nun um die start 
Funktion bzw. die stop Funktion handelt? Mir ist schon klar das ich da 
irgendwie ein Flag setzen muss aber an der Ausführung scheitert es bei 
mir. P.S. ich versuche mich gerade in C!

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na einfach jedesmal wenn du die Routine durchläufst irgendwas 
irgendwohin schreiben. Ob du da nur ein Bit setzt oder in eine 
Char-Variable "Start" oder "Stop" reinschreibst bleibt dir überlassen, 
musst es dann nur entsprechend abfragen.

bye

Frank

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst auch noch herausfinden, ob die Taste inzwischen losgelassen 
wurde...

Autor: Arno Nühm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
im Bereich der SPS wird häufig die ELTAKO-Funktion genutzt:

U  Eingang
FP Flankenmerker
X  Ausgang
=  Ausgang

Du fragst den Eingang ab, checkst auf positive Flanke (bei SPSen ist der 
vorherige Zustand des Eingangs automatisch gespeichert) und verknüpfst 
die Flanke über ein Exklusiv-Oder mit dem Ausgang. So gibt es bei jedem 
Tastendruck einen Wechsel.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Den Zustand des Tasters bekomme ich entprellt zur Verfügung
> gestellt von einer fertigen Routine

Bekommst du den aktuellen Zustand (gedrückt/nicht gedrückt),
oder bekommst du bereits die fertige Schaltflanke?


Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bekomme den Zustand, gedrückt oder halt nicht gedrückt!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK. dann musst du daraus mal als erstes den Zeitpunkt
des Umschaltens extrahieren. Der Rest ist dann einfach
nur Vergleichen des Tastenzustands mit dem Zustand
unmittelbar vorher bzw. auswerten ob gedrückt
oder nicht gedrückt, bzw. was das jetzt ist: Start oder Stop

#define START 0
#define STOP  1

unsigned char Pressed = 0;
unsigned char Modus = START;

....

int main()
{
  unsigned char KeyState;
  ....

  while( 1 ) {

    // Annahme: get_key_pressed liefert TRUE wenn die
    // Taste momentan gedrückt ist.

    KeyState = get_key_pressed( ... );

    // Hat sich was verändert?
    if( KeyState != Pressed ) {
      Pressed = KeyState;

      //
      // Ist die Taste jetzt gedrückt?
      //
      if( KeyState ) {

        // Kann es ein Start sein ?
        if( Modus == START ) {
          // mach was immer bei Start zu tun ist

          // wenn die Taste das nächste mal gedrückt wird
          // dann kann das nur ein Stop sein
          Modus = STOP;
        }

        // war kein Start, kann zwar nur ein Stop sein
        // aber sicher ist sicher
        else if(  Modus == STOP ) {
          // mach was auch immer bei Stop notwendig ist

          // Wenn die Taste das nächste mal gedrückt wird
          // dann kann das nur ein Start sein
          Modus = START;     
        }
      }
    }
  }
}


  

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.