HW2 entry for Peter Gao. One handed keyboard using push buttons and a laser-cut box.

Dependencies:   DebounceIn USBDevice mbed

Revision:
0:98ac2b055ab9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Sep 22 05:43:36 2014 +0000
@@ -0,0 +1,63 @@
+#include "mbed.h"
+#include "DebounceIn.h"
+#include "USBKeyboard.h"
+
+USBKeyboard keyboard;
+Serial pc(USBTX, USBRX);
+DebounceIn buttons[] = {D15, D14, D13, D12, D11, D10, D9, D8, D7, D6};
+DigitalOut capslock_light(LED1);
+int num_buttons = 10;
+int is_capital = 0;
+float key_delay = 0.2;
+
+int main() {
+    for (int i = 0; i < num_buttons; i++) {
+        buttons[i].mode(PullUp);
+        pc.printf("button %d is in pullup\n", i);
+    }
+    capslock_light = 1;
+    is_capital = 0;
+    pc.printf("starting loop");
+    while(1) {
+        for (int i = 2; i < num_buttons; i++) {
+            if (!buttons[0] && !buttons[1]) {
+                if (!buttons[4]) {
+                    // space
+                    keyboard.keyCode(' ');
+                    wait(key_delay);
+                    continue;
+                }
+                else if (!buttons[5]) {
+                    // backspace
+                    char backspace = 8;
+                    keyboard.keyCode(backspace);
+                    wait(key_delay);
+                    continue;
+                }
+                else if (!buttons[6]) {
+                    // capslock
+                    capslock_light = !capslock_light;
+                    keyboard.keyCode(KEY_CAPS_LOCK);
+                    wait(key_delay);
+                    continue;
+                }
+            }
+    
+            char base_char = 'a';
+            if (!buttons[0] && !buttons[1]) {
+                base_char = 'y';
+            }
+            else if (!buttons[0]) {
+                base_char = 'i';
+            }
+            else if (!buttons[1]) {
+                base_char = 'q';
+            }
+
+            if (!buttons[i]) {
+                keyboard.keyCode(base_char + i - 2);
+                wait(key_delay);
+            }
+        }
+    }
+}