summaryrefslogtreecommitdiff
path: root/keyboard-2/keyboard-2.ino
diff options
context:
space:
mode:
Diffstat (limited to 'keyboard-2/keyboard-2.ino')
-rw-r--r--keyboard-2/keyboard-2.ino38
1 files changed, 38 insertions, 0 deletions
diff --git a/keyboard-2/keyboard-2.ino b/keyboard-2/keyboard-2.ino
new file mode 100644
index 0000000..2e1a4ab
--- /dev/null
+++ b/keyboard-2/keyboard-2.ino
@@ -0,0 +1,38 @@
+int rows[] = {0, 1};
+int columns[] = {2, 3, 4};
+int pins[] = {14, 15, 16, 17, 18, 19};
+
+void setup() {
+ for (int i = 0; i < 2; i++) {
+ pinMode(i, INPUT_PULLUP);
+ }
+
+ pinMode(13, OUTPUT);
+
+ for (int i=0; i<6; i++) {
+ pinMode(pins[i], OUTPUT);
+ }
+}
+
+bool key_pressed(const int key) {
+ const int row = key / 3;
+ const int column = key % 3;
+
+ pinMode(columns[column], OUTPUT);
+ digitalWrite(columns[column], LOW);
+ bool pressed = digitalRead(rows[row]) == LOW;
+ pinMode(columns[column], INPUT);
+
+ return pressed;
+}
+
+void loop() {
+ digitalWrite(13, HIGH);
+ for (int i=0; i<6; i++) {
+ if (key_pressed(i)) {
+ digitalWrite(pins[i], HIGH);
+ } else {
+ digitalWrite(pins[i], LOW);
+ }
+ }
+}