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

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?

UserRevisionLine numberNew 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 }