summaryrefslogtreecommitdiff
path: root/keyboard-1/keyboard-1.ino
diff options
context:
space:
mode:
Diffstat (limited to 'keyboard-1/keyboard-1.ino')
-rw-r--r--keyboard-1/keyboard-1.ino50
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;
+ }
+ }
+ }
+}