Hands free keyboard reading.

Dependencies:   USBDevice mbed

Committer:
alexandertyler
Date:
Mon Sep 22 00:18:38 2014 +0000
Revision:
0:b967cdcb226f
Final project submission

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alexandertyler 0:b967cdcb226f 1 #include "mbed.h"
alexandertyler 0:b967cdcb226f 2 #include "USBKeyboard.h"
alexandertyler 0:b967cdcb226f 3 //#include "DebouncedEdgeIn.h"
alexandertyler 0:b967cdcb226f 4
alexandertyler 0:b967cdcb226f 5 //DigitalOut ledG(LED_GREEN);
alexandertyler 0:b967cdcb226f 6 //DigitalOut ledR(LED_RED);
alexandertyler 0:b967cdcb226f 7 //DigitalOut ledB(LED_BLUE);
alexandertyler 0:b967cdcb226f 8 USBKeyboard keyboard;
alexandertyler 0:b967cdcb226f 9
alexandertyler 0:b967cdcb226f 10 //Serial pc(USBTX, USBRX);
alexandertyler 0:b967cdcb226f 11
alexandertyler 0:b967cdcb226f 12 DigitalIn diL(D2);
alexandertyler 0:b967cdcb226f 13 DigitalIn diR(D3);
alexandertyler 0:b967cdcb226f 14 //DebouncedEdgeIn diL(D2);
alexandertyler 0:b967cdcb226f 15 //DebouncedEdgeIn diR(D3);
alexandertyler 0:b967cdcb226f 16
alexandertyler 0:b967cdcb226f 17 int lVal, rVal, preL = 1, preR = 1;
alexandertyler 0:b967cdcb226f 18 int bufferIndex = 0;
alexandertyler 0:b967cdcb226f 19 int ledIndex = 0;
alexandertyler 0:b967cdcb226f 20 int alphaIndex = 0;
alexandertyler 0:b967cdcb226f 21 bool keyUpdate = false;
alexandertyler 0:b967cdcb226f 22 DigitalOut ledArray[3] = {LED_RED, LED_GREEN, LED_BLUE};
alexandertyler 0:b967cdcb226f 23 uint8_t alphaArray[31] = {'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',' ','.',8,10,'c'};
alexandertyler 0:b967cdcb226f 24
alexandertyler 0:b967cdcb226f 25
alexandertyler 0:b967cdcb226f 26 /*
alexandertyler 0:b967cdcb226f 27 void bufferAdd(char* indexVal) {
alexandertyler 0:b967cdcb226f 28 buffer[bufferIndex] = indexVal;
alexandertyler 0:b967cdcb226f 29 bufferIndex++;
alexandertyler 0:b967cdcb226f 30 if (bufferIndex == 19) {
alexandertyler 0:b967cdcb226f 31 keyUpdate = true;
alexandertyler 0:b967cdcb226f 32 bufferIndex = 0;
alexandertyler 0:b967cdcb226f 33 }
alexandertyler 0:b967cdcb226f 34 }
alexandertyler 0:b967cdcb226f 35 */
alexandertyler 0:b967cdcb226f 36
alexandertyler 0:b967cdcb226f 37 void poll() {
alexandertyler 0:b967cdcb226f 38 lVal = diL.read();
alexandertyler 0:b967cdcb226f 39 rVal = diR.read();
alexandertyler 0:b967cdcb226f 40 }
alexandertyler 0:b967cdcb226f 41
alexandertyler 0:b967cdcb226f 42 void onRiseL(void) {
alexandertyler 0:b967cdcb226f 43 keyUpdate = true;
alexandertyler 0:b967cdcb226f 44 //update led value
alexandertyler 0:b967cdcb226f 45 ledArray[ledIndex] = 0;
alexandertyler 0:b967cdcb226f 46
alexandertyler 0:b967cdcb226f 47 //do alphabet update
alexandertyler 0:b967cdcb226f 48 if (alphaIndex == 0) {
alexandertyler 0:b967cdcb226f 49 alphaIndex = 30;
alexandertyler 0:b967cdcb226f 50 } else {
alexandertyler 0:b967cdcb226f 51 alphaIndex -= 1;
alexandertyler 0:b967cdcb226f 52 }
alexandertyler 0:b967cdcb226f 53
alexandertyler 0:b967cdcb226f 54 //do led update
alexandertyler 0:b967cdcb226f 55 if (ledIndex == 0) {
alexandertyler 0:b967cdcb226f 56 ledIndex = 2;
alexandertyler 0:b967cdcb226f 57 } else {
alexandertyler 0:b967cdcb226f 58 ledIndex -= 1;
alexandertyler 0:b967cdcb226f 59 }
alexandertyler 0:b967cdcb226f 60
alexandertyler 0:b967cdcb226f 61 ledArray[ledIndex] = 1;
alexandertyler 0:b967cdcb226f 62 //pc.puts(alphaArray[alphaIndex]);
alexandertyler 0:b967cdcb226f 63 }
alexandertyler 0:b967cdcb226f 64
alexandertyler 0:b967cdcb226f 65 void onRiseR(void) {
alexandertyler 0:b967cdcb226f 66 keyUpdate = true;
alexandertyler 0:b967cdcb226f 67 //change led value
alexandertyler 0:b967cdcb226f 68 ledArray[ledIndex] = 0;
alexandertyler 0:b967cdcb226f 69
alexandertyler 0:b967cdcb226f 70 //do alphabet update
alexandertyler 0:b967cdcb226f 71 if (alphaIndex == 30) {
alexandertyler 0:b967cdcb226f 72 alphaIndex = 0;
alexandertyler 0:b967cdcb226f 73 } else {
alexandertyler 0:b967cdcb226f 74 alphaIndex += 1;
alexandertyler 0:b967cdcb226f 75 }
alexandertyler 0:b967cdcb226f 76
alexandertyler 0:b967cdcb226f 77 //do led update
alexandertyler 0:b967cdcb226f 78 if (ledIndex == 2) {
alexandertyler 0:b967cdcb226f 79 ledIndex = 0;
alexandertyler 0:b967cdcb226f 80 } else {
alexandertyler 0:b967cdcb226f 81 ledIndex += 1;
alexandertyler 0:b967cdcb226f 82 }
alexandertyler 0:b967cdcb226f 83
alexandertyler 0:b967cdcb226f 84 ledArray[ledIndex] = 1;
alexandertyler 0:b967cdcb226f 85 //pc.puts(alphaArray[alphaIndex]);
alexandertyler 0:b967cdcb226f 86 }
alexandertyler 0:b967cdcb226f 87
alexandertyler 0:b967cdcb226f 88 int main()
alexandertyler 0:b967cdcb226f 89 {
alexandertyler 0:b967cdcb226f 90 diL.mode(PullUp);
alexandertyler 0:b967cdcb226f 91 diR.mode(PullUp);
alexandertyler 0:b967cdcb226f 92
alexandertyler 0:b967cdcb226f 93 while (true) {
alexandertyler 0:b967cdcb226f 94 poll();
alexandertyler 0:b967cdcb226f 95 if (lVal == 0) {onRiseL();}
alexandertyler 0:b967cdcb226f 96 if (rVal == 0) {onRiseR();}
alexandertyler 0:b967cdcb226f 97 //keyboard.printf("hello from mbed.\n");
alexandertyler 0:b967cdcb226f 98 if (keyUpdate) {
alexandertyler 0:b967cdcb226f 99 if (alphaIndex == 30) {
alexandertyler 0:b967cdcb226f 100 keyboard.keyCode('c', KEY_CTRL);
alexandertyler 0:b967cdcb226f 101 } else {
alexandertyler 0:b967cdcb226f 102 keyboard.keyCode(alphaArray[alphaIndex]);
alexandertyler 0:b967cdcb226f 103 }
alexandertyler 0:b967cdcb226f 104 keyUpdate = false;
alexandertyler 0:b967cdcb226f 105 wait(0.15);
alexandertyler 0:b967cdcb226f 106 }
alexandertyler 0:b967cdcb226f 107 }
alexandertyler 0:b967cdcb226f 108 }