chorded keyboard with buttons on glove fingertips so you can type on the go - maps 5 digit binary input to various letters/symbols; extra button to switch caps lock on/off
Dependencies: PinDetect USBDevice mbed
G_type.cpp@1:83eef11a227c, 2015-09-13 (annotated)
- Committer:
- lmfarrell
- Date:
- Sun Sep 13 05:26:31 2015 +0000
- Revision:
- 1:83eef11a227c
- Parent:
- 0:616c1c39bd92
first revision
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lmfarrell | 0:616c1c39bd92 | 1 | #include "mbed.h" |
lmfarrell | 0:616c1c39bd92 | 2 | #include "PinDetect.h" |
lmfarrell | 0:616c1c39bd92 | 3 | |
lmfarrell | 0:616c1c39bd92 | 4 | PinDetect pb0(D2, PullUp); |
lmfarrell | 0:616c1c39bd92 | 5 | PinDetect pb1(D6, PullUp); |
lmfarrell | 0:616c1c39bd92 | 6 | PinDetect pb2(D7, PullUp); |
lmfarrell | 0:616c1c39bd92 | 7 | PinDetect pb3(D5, PullUp); |
lmfarrell | 0:616c1c39bd92 | 8 | PinDetect pb4(D4, PullUp); |
lmfarrell | 0:616c1c39bd92 | 9 | PinDetect pb5(D3, PullUp); |
lmfarrell | 0:616c1c39bd92 | 10 | DigitalOut myled(LED1); |
lmfarrell | 0:616c1c39bd92 | 11 | |
lmfarrell | 0:616c1c39bd92 | 12 | Serial pc(USBTX, USBRX); |
lmfarrell | 0:616c1c39bd92 | 13 | |
lmfarrell | 0:616c1c39bd92 | 14 | int pinbus[5] = {0, 0, 0, 0, 0}; |
lmfarrell | 0:616c1c39bd92 | 15 | int toggle = 0; |
lmfarrell | 0:616c1c39bd92 | 16 | |
lmfarrell | 0:616c1c39bd92 | 17 | char map[2][31] = { |
lmfarrell | 0:616c1c39bd92 | 18 | {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '.', '?', ' ', '\n', '\b'}, |
lmfarrell | 0:616c1c39bd92 | 19 | {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '.', '?', ' ', '\n', '\b'}, |
lmfarrell | 0:616c1c39bd92 | 20 | }; |
lmfarrell | 0:616c1c39bd92 | 21 | |
lmfarrell | 0:616c1c39bd92 | 22 | int pinbusvalues[31][5] = { |
lmfarrell | 0:616c1c39bd92 | 23 | {0, 0, 0, 0, 1}, {0, 0, 0, 1, 1}, {0, 0, 1, 0, 1}, {0, 1, 0, 0, 1}, {1, 0, 0, 0, 1}, |
lmfarrell | 0:616c1c39bd92 | 24 | {0, 0, 0, 1, 0}, {0, 0, 1, 1, 0}, {0, 1, 0, 1, 0}, {1, 0, 0, 1, 0}, {0, 0, 1, 0, 0}, |
lmfarrell | 0:616c1c39bd92 | 25 | {0, 1, 1, 0, 0}, {1, 0, 1, 0, 0}, {0, 1, 0, 0, 0}, {1, 1, 0, 0, 0}, {1, 0, 0, 0, 0}, |
lmfarrell | 0:616c1c39bd92 | 26 | {0, 0, 1, 1, 1}, {0, 1, 0, 1, 1}, {1, 0, 0, 1, 1}, {0, 1, 1, 1, 0}, {1, 0, 1, 1, 0}, |
lmfarrell | 0:616c1c39bd92 | 27 | {1, 1, 0, 1, 0}, {1, 1, 0, 0, 1}, {0, 1, 1, 0, 1}, {1, 0, 1, 0, 1}, {1, 1, 0, 1, 1}, |
lmfarrell | 0:616c1c39bd92 | 28 | {1, 0, 1, 1, 1}, {1, 1, 1, 0, 0}, {1, 1, 1, 0, 1}, {1, 1, 1, 1, 1}, {0, 1, 1, 1, 1}, |
lmfarrell | 0:616c1c39bd92 | 29 | {1, 1, 1, 1, 0} |
lmfarrell | 0:616c1c39bd92 | 30 | }; |
lmfarrell | 0:616c1c39bd92 | 31 | |
lmfarrell | 0:616c1c39bd92 | 32 | void CAPSpressed(void){ |
lmfarrell | 0:616c1c39bd92 | 33 | toggle = !toggle; |
lmfarrell | 0:616c1c39bd92 | 34 | } |
lmfarrell | 0:616c1c39bd92 | 35 | void f1pressed(void){ |
lmfarrell | 0:616c1c39bd92 | 36 | pinbus[0] = 1; |
lmfarrell | 0:616c1c39bd92 | 37 | } |
lmfarrell | 0:616c1c39bd92 | 38 | void f2pressed(void){ |
lmfarrell | 0:616c1c39bd92 | 39 | pinbus[1] = 1; |
lmfarrell | 0:616c1c39bd92 | 40 | } |
lmfarrell | 0:616c1c39bd92 | 41 | void f3pressed(void){ |
lmfarrell | 0:616c1c39bd92 | 42 | pinbus[2] = 1; |
lmfarrell | 0:616c1c39bd92 | 43 | } |
lmfarrell | 0:616c1c39bd92 | 44 | void f4pressed(void){ |
lmfarrell | 0:616c1c39bd92 | 45 | pinbus[3] = 1; |
lmfarrell | 0:616c1c39bd92 | 46 | } |
lmfarrell | 0:616c1c39bd92 | 47 | void f5pressed(void){ |
lmfarrell | 0:616c1c39bd92 | 48 | pinbus[4] = 1; |
lmfarrell | 0:616c1c39bd92 | 49 | } |
lmfarrell | 0:616c1c39bd92 | 50 | |
lmfarrell | 0:616c1c39bd92 | 51 | void keyPressed(void){ |
lmfarrell | 0:616c1c39bd92 | 52 | for (int i=0; i<31; i++){ |
lmfarrell | 0:616c1c39bd92 | 53 | if (pinbus[0] == pinbusvalues[i][0]&&pinbus[1] == pinbusvalues[i][1]&&pinbus[2] == pinbusvalues[i][2]&&pinbus[3] == pinbusvalues[i][3]&&pinbus[4] == pinbusvalues[i][4]) { |
lmfarrell | 0:616c1c39bd92 | 54 | pc.printf("%c", map[toggle][i]); |
lmfarrell | 0:616c1c39bd92 | 55 | } |
lmfarrell | 0:616c1c39bd92 | 56 | } |
lmfarrell | 0:616c1c39bd92 | 57 | for (int k=0; k<5; k++) { |
lmfarrell | 0:616c1c39bd92 | 58 | pinbus[k] = 0; |
lmfarrell | 0:616c1c39bd92 | 59 | } |
lmfarrell | 0:616c1c39bd92 | 60 | } |
lmfarrell | 0:616c1c39bd92 | 61 | |
lmfarrell | 0:616c1c39bd92 | 62 | int main() { |
lmfarrell | 0:616c1c39bd92 | 63 | pc.baud(9600); |
lmfarrell | 0:616c1c39bd92 | 64 | pb0.attach_deasserted(&CAPSpressed); |
lmfarrell | 0:616c1c39bd92 | 65 | pb1.attach_deasserted(&f1pressed); |
lmfarrell | 0:616c1c39bd92 | 66 | pb2.attach_deasserted(&f2pressed); |
lmfarrell | 0:616c1c39bd92 | 67 | pb3.attach_deasserted(&f3pressed); |
lmfarrell | 0:616c1c39bd92 | 68 | pb4.attach_deasserted(&f4pressed); |
lmfarrell | 0:616c1c39bd92 | 69 | pb5.attach_deasserted(&f5pressed); |
lmfarrell | 0:616c1c39bd92 | 70 | pb1.attach_asserted(&keyPressed); |
lmfarrell | 0:616c1c39bd92 | 71 | pb2.attach_asserted(&keyPressed); |
lmfarrell | 0:616c1c39bd92 | 72 | pb3.attach_asserted(&keyPressed); |
lmfarrell | 0:616c1c39bd92 | 73 | pb4.attach_asserted(&keyPressed); |
lmfarrell | 0:616c1c39bd92 | 74 | pb5.attach_asserted(&keyPressed); |
lmfarrell | 0:616c1c39bd92 | 75 | //set frequency |
lmfarrell | 0:616c1c39bd92 | 76 | pb0.setSampleFrequency(); |
lmfarrell | 0:616c1c39bd92 | 77 | pb1.setSampleFrequency(); |
lmfarrell | 0:616c1c39bd92 | 78 | pb2.setSampleFrequency(); |
lmfarrell | 0:616c1c39bd92 | 79 | pb3.setSampleFrequency(); |
lmfarrell | 0:616c1c39bd92 | 80 | pb4.setSampleFrequency(); |
lmfarrell | 0:616c1c39bd92 | 81 | pb5.setSampleFrequency(); |
lmfarrell | 0:616c1c39bd92 | 82 | |
lmfarrell | 0:616c1c39bd92 | 83 | while(1){ |
lmfarrell | 0:616c1c39bd92 | 84 | myled = !myled; |
lmfarrell | 0:616c1c39bd92 | 85 | wait(0.2); |
lmfarrell | 0:616c1c39bd92 | 86 | } |
lmfarrell | 0:616c1c39bd92 | 87 | } |