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;
}