diff options
Diffstat (limited to 'keyboard-1')
-rw-r--r-- | keyboard-1/keyboard-1.ino | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/keyboard-1/keyboard-1.ino b/keyboard-1/keyboard-1.ino new file mode 100644 index 0000000..5b76bdd --- /dev/null +++ b/keyboard-1/keyboard-1.ino @@ -0,0 +1,50 @@ +const int rows[] = {4, 5}; +const int kRows = 2; + +const int columns[] = {6, 7}; +const int kColumns = 2; + +bool buttons[] = {false, false, false, false}; + +void setup() { + for (int i = 0; i < kRows; i++) { + pinMode(rows[i], INPUT_PULLUP); + } + for (int i = 0; i < kColumns; i++) { + pinMode(columns[i], INPUT); + } + Serial.begin(9600); +} + +bool scanKey(int row, int column) { + pinMode(columns[column], OUTPUT); + digitalWrite(columns[column], LOW); + bool pressed = digitalRead(rows[row]) == LOW; + pinMode(columns[column], INPUT); + return pressed; +} + +void loop() { +// pinMode(4, INPUT_PULLUP); +// if (digitalRead(4) == LOW) { +// Serial.print("pushed: "); +// Serial.println(columns[0]); +// } else { +// Serial.println("not pushed"); +// } + + for (int i = 0; i < kRows; i++) { + for (int j = 0; j < kColumns; j++) { + bool pressed = scanKey(i, j); + if (pressed != buttons[i * kColumns + j]) { + if (pressed) { + Serial.print("Button pressed: "); + } else { + Serial.print("Button released: "); + } + Serial.println(i * kColumns + j); + buttons[i * kColumns + j] = pressed; + } + } + } +} |