HW2 entry for Peter Gao. One handed keyboard using push buttons and a laser-cut box.
Dependencies: DebounceIn USBDevice mbed
Diff: main.cpp
- 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); + } + } + } +}