Interactive Device Design
/
idd_hw2_alexandertyler_footTyping
Hands free keyboard reading.
main.cpp@0:b967cdcb226f, 2014-09-22 (annotated)
- Committer:
- alexandertyler
- Date:
- Mon Sep 22 00:18:38 2014 +0000
- Revision:
- 0:b967cdcb226f
Final project submission
Who changed what in which revision?
User | Revision | Line number | New 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 | } |