Arduino programmerbara knappen Panel som tangentbord (4 / 6 steg)
Steg 4: Skala till flera knappar
Ledningarna är, ganska mycket, samma som med en enda knapp. Signalkabeln ansluts direkt till stift och alla gnd ansluts genom en enda motstånd.
För koden, du måste definiera alla våra variabler som matriser och skapa en "för" loopar att kontrollera status för varje pin:
#include "Keyboard.h"
CONST int buttonPin [] = {2, 3, 4, 5};
int pinCount = 4;
int buttonState [] = {0, 0, 0, 0};
int prevButtonState [] = {hög, hög, hög, hög};
lång lastDebounceTime [] = {0, 0, 0, 0};
lång debounceDelay = 50;
void setup() {
för (int thisPin = pinCount - 1; thisPin > = 0, thisPin--) {
pinMode (buttonPin [thisPin], ingång);
digitalWrite (buttonPin [thisPin], hög);
}
Keyboard.BEGIN();
}
Output åtgärder. Förmodligen den enda del som du behöver ändra
int outputAction (int currentButton) {
om (currentButton == 1) {
Keyboard.Press(ctrlKey);
Keyboard.Press('c');
Delay(100);
Keyboard.releaseAll();
}
om (currentButton + 1 == 2) {
Keyboard.Press(ctrlKey);
Keyboard.Press('v');
Delay(100);
Keyboard.releaseAll();
}
}
void loop() {
för (int thisPin = pinCount - 1; thisPin > = 0, thisPin--) {
buttonState [thisPin] = digitalRead(buttonPin[thisPin]);
om ((buttonState [thisPin]! = prevButtonState[thisPin]) & & (buttonState [thisPin] == hög)) {
om ((millis() - lastDebounceTime[thisPin]) > debounceDelay) {
outputAction(thisPin);
lastDebounceTime [thisPin] = millis();
}
}
prevButtonState [thisPin] = buttonState [thisPin];
}
}
För ledningar anslutningen förblir fast även när du behöver öppna rutan, överväga tin löda kablarna till knapparna. Du hittar lätt tutorials om detta på YouTube.