Arduino HID Keyboard Pfeiltasten und F Tasten

Hallo,

Vielen Dank für dein Code-Beispiel. Funktioniert perfekt. Nun auch mit den Programmen, wo es vorher noch nicht geklappt hat. Wird nämlich eine CNC-Fernbedienung.

Hier noch mein gesamter Code:

PS: Kann man vom Arduino Leonardo noch mehr Pins als Input verwenden, außer die Pins 2 - 10 und 14 - 16?

#include "Keyboard.h"

const byte buttonPin2  =  2;   // KEY_LEFT_ARROW
const byte buttonPin3  =  3;   // KEY_RIGHT_ARROW
const byte buttonPin4  =  4;   // KEY_UP_ARROW
const byte buttonPin5  =  5;   // KEY_DOWN_ARROW
const byte buttonPin6  =  6;   // KEY_LEFT_ALT  +  KEY_LEFT_ARROW
const byte buttonPin7  =  7;   // KEY_LEFT_ALT  +  KEY_RIGHT_ARROW
const byte buttonPin8  =  8;   // KEY_LEFT_ALT  +  KEY_UP_ARROW
const byte buttonPin9  =  9;   // KEY_LEFT_ALT  +  KEY_DOWN_ARROW
const byte buttonPin10 = 10;   // KEY_PAGE_UP
const byte buttonPin11 = 11;   // KEY_PAGE_DOWN
const byte buttonPin12 = 12;   // KEY_F4

boolean previousButtonState2  = LOW;
boolean previousButtonState3  = LOW;
boolean previousButtonState4  = LOW;
boolean previousButtonState5  = LOW;
boolean previousButtonState6  = LOW;
boolean previousButtonState7  = LOW;
boolean previousButtonState8  = LOW;
boolean previousButtonState9  = LOW;
boolean previousButtonState10 = LOW;
boolean previousButtonState11 = LOW;
boolean previousButtonState12 = LOW;

unsigned long lastMillis;
unsigned long waitTime = 40;   // Entprellzeit


void setup() {
  pinMode(buttonPin2,  INPUT_PULLUP);
  pinMode(buttonPin3,  INPUT_PULLUP);
  pinMode(buttonPin4,  INPUT_PULLUP);
  pinMode(buttonPin5,  INPUT_PULLUP);
  pinMode(buttonPin6,  INPUT_PULLUP);
  pinMode(buttonPin7,  INPUT_PULLUP);
  pinMode(buttonPin8,  INPUT_PULLUP);
  pinMode(buttonPin9,  INPUT_PULLUP);
  pinMode(buttonPin10, INPUT_PULLUP);
  pinMode(buttonPin11, INPUT_PULLUP);
  pinMode(buttonPin12, INPUT_PULLUP);
 
  Keyboard.begin();
}


void loop() {

  // Einlesen der Taster

  boolean buttonState2  = digitalRead(buttonPin2);
  boolean buttonState3  = digitalRead(buttonPin3);
  boolean buttonState4  = digitalRead(buttonPin4);
  boolean buttonState5  = digitalRead(buttonPin5);
  boolean buttonState6  = digitalRead(buttonPin6);
  boolean buttonState7  = digitalRead(buttonPin7);
  boolean buttonState8  = digitalRead(buttonPin8);
  boolean buttonState9  = digitalRead(buttonPin9);
  boolean buttonState10 = digitalRead(buttonPin10);
  boolean buttonState11 = digitalRead(buttonPin11);
  boolean buttonState12 = digitalRead(buttonPin12);

  // Auswertung und Ausgabe

//Button 2
  if ( (buttonState2 != previousButtonState2) && (millis() - lastMillis > waitTime) ) {
    if (buttonState2 == LOW) {   // Taste wurde gedrückt
      Keyboard.press(KEY_LEFT_ARROW);
      lastMillis = millis();
    }
    else {    // Taste wurde losgelassen
      Keyboard.release(KEY_LEFT_ARROW);
      lastMillis = millis();
    }
  }

//Button 3
  if ( (buttonState3 != previousButtonState3) && (millis() - lastMillis > waitTime) ) {
    if (buttonState3 == LOW) {   // Taste wurde gedrückt
      Keyboard.press(KEY_RIGHT_ARROW);
      lastMillis = millis();
    }
    else {    // Taste wurde losgelassen
      Keyboard.release(KEY_RIGHT_ARROW);
      lastMillis = millis();
    }
  }

//Button 4
  if ( (buttonState4 != previousButtonState4) && (millis() - lastMillis > waitTime) ) {
    if (buttonState4 == LOW) {   // Taste wurde gedrückt
      Keyboard.press(KEY_UP_ARROW);
      lastMillis = millis();
    }
    else {    // Taste wurde losgelassen
      Keyboard.release(KEY_UP_ARROW);
      lastMillis = millis();
    }
  }

//Button 5
  if ( (buttonState5 != previousButtonState5) && (millis() - lastMillis > waitTime) ) {
    if (buttonState5 == LOW) {   // Taste wurde gedrückt
      Keyboard.press(KEY_DOWN_ARROW);
      lastMillis = millis();
    }
    else {    // Taste wurde losgelassen
      Keyboard.release(KEY_DOWN_ARROW);
      lastMillis = millis();
    }
  }

//Button 6
  if ( (buttonState6 != previousButtonState6) && (millis() - lastMillis > waitTime) ) {
    if (buttonState6 == LOW) {
       Keyboard.press(KEY_LEFT_SHIFT);
       Keyboard.press(KEY_LEFT_ARROW);
      lastMillis = millis();
    }
    else {
      Keyboard.release(KEY_LEFT_SHIFT);
      Keyboard.release(KEY_LEFT_ARROW);
      lastMillis = millis();
    }
  }

//Button 7
  if ( (buttonState7 != previousButtonState7) && (millis() - lastMillis > waitTime) ) {
    if (buttonState7 == LOW) {
       Keyboard.press(KEY_LEFT_SHIFT);
       Keyboard.press(KEY_RIGHT_ARROW);
      lastMillis = millis();
    }
    else {
      Keyboard.release(KEY_LEFT_SHIFT);
      Keyboard.release(KEY_RIGHT_ARROW);
      lastMillis = millis();
    }
  }

//Button 8
  if ( (buttonState8 != previousButtonState8) && (millis() - lastMillis > waitTime) ) {
    if (buttonState8 == LOW) {
       Keyboard.press(KEY_LEFT_SHIFT);
       Keyboard.press(KEY_UP_ARROW);
      lastMillis = millis();
    }
    else {
      Keyboard.release(KEY_LEFT_SHIFT);
      Keyboard.release(KEY_UP_ARROW);
      lastMillis = millis();
    }
  }

//Button 9
  if ( (buttonState9 != previousButtonState9) && (millis() - lastMillis > waitTime) ) {
    if (buttonState9 == LOW) {
       Keyboard.press(KEY_LEFT_SHIFT);
       Keyboard.press(KEY_DOWN_ARROW);
      lastMillis = millis();
    }
    else {
      Keyboard.release(KEY_LEFT_SHIFT);
      Keyboard.release(KEY_DOWN_ARROW);
      lastMillis = millis();
    }
  }

//Button 10  
  if ( (buttonState10 != previousButtonState10) && (millis() - lastMillis > waitTime) ) {
    if (buttonState10 == LOW) {   // Taste wurde gedrückt
      Keyboard.press(KEY_PAGE_UP);
      lastMillis = millis();
    }
    else {    // Taste wurde losgelassen
      Keyboard.release(KEY_PAGE_UP);
      lastMillis = millis();
    }
  }

//Button 11  
  if ( (buttonState11 != previousButtonState11) && (millis() - lastMillis > waitTime) ) {
    if (buttonState11 == LOW) {   // Taste wurde gedrückt
      Keyboard.press(KEY_PAGE_DOWN);
      lastMillis = millis();
    }
    else {    // Taste wurde losgelassen
      Keyboard.release(KEY_PAGE_DOWN);
      lastMillis = millis();
    }
  }

//Button 12 
  if ( (buttonState12 != previousButtonState12) && (millis() - lastMillis > waitTime) ) {
    if (buttonState12 == LOW) {
      Keyboard.press(KEY_F4);
      lastMillis = millis();
    }
    else {
      Keyboard.release(KEY_F4);
      lastMillis = millis();
    }
  }

  previousButtonState2  = buttonState2;
  previousButtonState3  = buttonState3;
  previousButtonState4  = buttonState4;
  previousButtonState5  = buttonState5;
  previousButtonState6  = buttonState6;
  previousButtonState7  = buttonState7;
  previousButtonState8  = buttonState8;
  previousButtonState9  = buttonState9;
  previousButtonState10 = buttonState10;
  previousButtonState11 = buttonState11;
  previousButtonState12 = buttonState12;
}