uniquePress() und Prellen

Hallo,

ich habe erstmals die Library "Button" verwendet. Bei der Auswertung mit dem Leonardo verwende ich die Funktion

Button btn  = Button( 3,PULLUP );

 if ( btn.uniquePress() )
  {
    Keyboard.press( KEY_LEFT_ARROW );
    Keyboard.releaseAll();
  }

laut Beschreibung sollte die Funktion den Wechsel erkennen und das erste Drücken bzw. Wechsel rückmelden. Der Cursor spring jedoch nicht pro Taster-Betätigung (an Pin 3 nach Masse) nur einmal, sondern willkürlich einmal, zweimal oder sogar dreimal. Habe derzeit kein Pull-Up Widerstand an Pin3. Wird mit der Anweisung

Button btn  = Button( 3,PULLUP );

der interne Pull-Up analog der Anweisung aktiviert? Beziehungsweise kann ich den internen Pullup zusätzlich aktivieren?

 pinMode( 3,INPUT_PULLUP );

Gruß Adruino4Fun

Der Wert heisst BUTTON_PULLUP_INTERNAL, wenn der interne Pull-Up aktiviert werden soll. Also:

Button btn = Button(3, BUTTON_PULLUP_INTERNAL);

Ansonsten entprellt die Bibliothek den Knopf nicht, sie stellt nur den Zustand fest und meldet Zustandswechsel.

Danke für die Antwort,

gibt es eine vergleichbare Library, welche Taster verarbeitet - analog BUTTON - [u]und[/u] auch eine Entprell-Funktion hat?

Gruß Arduino4Fun

Für meine Zwecke habe ich es nun so gelöst - schau nur alle 50ms auf den Status.

Button btn  = Button( 3,INPUT_PULLUP );


  if( ( millis()-t )>50 )
  {
   if ( btn.uniquePress() )
   {
    Keyboard.press( KEY_LEFT_ARROW );
    Keyboard.releaseAll();
   }
    t = millis();
  }

Sollte Prellzeit überstehen :)

Gruss Arduino4Fun

Das ist keine Entprellung, aber dürfte in den meisten Fällen funktionieren. Wenn es für Deine Anwendung also genügt, wenn nur in seltenen Fällen ein Tastendruck als zwei daherkommt oder gar nicht registriert wird, dann sollte das genügen.