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

Dependencies:   DebounceIn USBDevice mbed

Committer:
pgao
Date:
Mon Sep 22 05:43:36 2014 +0000
Revision:
0:98ac2b055ab9
First commit!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pgao 0:98ac2b055ab9 1 #include "mbed.h"
pgao 0:98ac2b055ab9 2 #include "DebounceIn.h"
pgao 0:98ac2b055ab9 3 #include "USBKeyboard.h"
pgao 0:98ac2b055ab9 4
pgao 0:98ac2b055ab9 5 USBKeyboard keyboard;
pgao 0:98ac2b055ab9 6 Serial pc(USBTX, USBRX);
pgao 0:98ac2b055ab9 7 DebounceIn buttons[] = {D15, D14, D13, D12, D11, D10, D9, D8, D7, D6};
pgao 0:98ac2b055ab9 8 DigitalOut capslock_light(LED1);
pgao 0:98ac2b055ab9 9 int num_buttons = 10;
pgao 0:98ac2b055ab9 10 int is_capital = 0;
pgao 0:98ac2b055ab9 11 float key_delay = 0.2;
pgao 0:98ac2b055ab9 12
pgao 0:98ac2b055ab9 13 int main() {
pgao 0:98ac2b055ab9 14 for (int i = 0; i < num_buttons; i++) {
pgao 0:98ac2b055ab9 15 buttons[i].mode(PullUp);
pgao 0:98ac2b055ab9 16 pc.printf("button %d is in pullup\n", i);
pgao 0:98ac2b055ab9 17 }
pgao 0:98ac2b055ab9 18 capslock_light = 1;
pgao 0:98ac2b055ab9 19 is_capital = 0;
pgao 0:98ac2b055ab9 20 pc.printf("starting loop");
pgao 0:98ac2b055ab9 21 while(1) {
pgao 0:98ac2b055ab9 22 for (int i = 2; i < num_buttons; i++) {
pgao 0:98ac2b055ab9 23 if (!buttons[0] && !buttons[1]) {
pgao 0:98ac2b055ab9 24 if (!buttons[4]) {
pgao 0:98ac2b055ab9 25 // space
pgao 0:98ac2b055ab9 26 keyboard.keyCode(' ');
pgao 0:98ac2b055ab9 27 wait(key_delay);
pgao 0:98ac2b055ab9 28 continue;
pgao 0:98ac2b055ab9 29 }
pgao 0:98ac2b055ab9 30 else if (!buttons[5]) {
pgao 0:98ac2b055ab9 31 // backspace
pgao 0:98ac2b055ab9 32 char backspace = 8;
pgao 0:98ac2b055ab9 33 keyboard.keyCode(backspace);
pgao 0:98ac2b055ab9 34 wait(key_delay);
pgao 0:98ac2b055ab9 35 continue;
pgao 0:98ac2b055ab9 36 }
pgao 0:98ac2b055ab9 37 else if (!buttons[6]) {
pgao 0:98ac2b055ab9 38 // capslock
pgao 0:98ac2b055ab9 39 capslock_light = !capslock_light;
pgao 0:98ac2b055ab9 40 keyboard.keyCode(KEY_CAPS_LOCK);
pgao 0:98ac2b055ab9 41 wait(key_delay);
pgao 0:98ac2b055ab9 42 continue;
pgao 0:98ac2b055ab9 43 }
pgao 0:98ac2b055ab9 44 }
pgao 0:98ac2b055ab9 45
pgao 0:98ac2b055ab9 46 char base_char = 'a';
pgao 0:98ac2b055ab9 47 if (!buttons[0] && !buttons[1]) {
pgao 0:98ac2b055ab9 48 base_char = 'y';
pgao 0:98ac2b055ab9 49 }
pgao 0:98ac2b055ab9 50 else if (!buttons[0]) {
pgao 0:98ac2b055ab9 51 base_char = 'i';
pgao 0:98ac2b055ab9 52 }
pgao 0:98ac2b055ab9 53 else if (!buttons[1]) {
pgao 0:98ac2b055ab9 54 base_char = 'q';
pgao 0:98ac2b055ab9 55 }
pgao 0:98ac2b055ab9 56
pgao 0:98ac2b055ab9 57 if (!buttons[i]) {
pgao 0:98ac2b055ab9 58 keyboard.keyCode(base_char + i - 2);
pgao 0:98ac2b055ab9 59 wait(key_delay);
pgao 0:98ac2b055ab9 60 }
pgao 0:98ac2b055ab9 61 }
pgao 0:98ac2b055ab9 62 }
pgao 0:98ac2b055ab9 63 }