Text input via five fingertip switches and three controls keys mounted on rubber band ball.

Dependencies:   PinDetect mbed

Committer:
jn80842
Date:
Mon Sep 22 06:07:54 2014 +0000
Revision:
0:a04f3049f206
hw2 text input project

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jn80842 0:a04f3049f206 1 #include "mbed.h"
jn80842 0:a04f3049f206 2 #include "PinDetect.h"
jn80842 0:a04f3049f206 3
jn80842 0:a04f3049f206 4 Serial pc(USBTX, USBRX); // tx, rx
jn80842 0:a04f3049f206 5
jn80842 0:a04f3049f206 6 PinDetect button1(D7);
jn80842 0:a04f3049f206 7 PinDetect button2(D6);
jn80842 0:a04f3049f206 8 PinDetect button3(D5);
jn80842 0:a04f3049f206 9 PinDetect button4(D4);
jn80842 0:a04f3049f206 10 PinDetect button5(D3);
jn80842 0:a04f3049f206 11
jn80842 0:a04f3049f206 12 PinDetect buttonBottom(PTC0);
jn80842 0:a04f3049f206 13 PinDetect buttonLeft(PTC7);
jn80842 0:a04f3049f206 14 PinDetect buttonMid(PTC5);
jn80842 0:a04f3049f206 15
jn80842 0:a04f3049f206 16 int buttonSide = 0; //initialize to left
jn80842 0:a04f3049f206 17 int buttonLevel = 0; //initialize to top
jn80842 0:a04f3049f206 18
jn80842 0:a04f3049f206 19 char key1[2][3] = {{'Q','A','Z'}, {'Y','H','N'}};
jn80842 0:a04f3049f206 20 char key2[2][3] = {{'W','S','X'}, {'U','J','M'}};
jn80842 0:a04f3049f206 21 char key3[2][3] = {{'E','D','C'}, {'I','K',' '}};
jn80842 0:a04f3049f206 22 char key4[2][3] = {{'R','F','V'}, {'O','L','.'}};
jn80842 0:a04f3049f206 23 char key5[2][3] = {{'T','G','B'}, {'P','!','?'}};
jn80842 0:a04f3049f206 24
jn80842 0:a04f3049f206 25 void key1Pressed(void) {
jn80842 0:a04f3049f206 26 pc.printf("%c",key1[buttonSide][buttonLevel]);
jn80842 0:a04f3049f206 27 }
jn80842 0:a04f3049f206 28 void key2Pressed(void) {
jn80842 0:a04f3049f206 29 pc.printf("%c",key2[buttonSide][buttonLevel]);
jn80842 0:a04f3049f206 30 }
jn80842 0:a04f3049f206 31 void key3Pressed(void) {
jn80842 0:a04f3049f206 32 pc.printf("%c",key3[buttonSide][buttonLevel]);
jn80842 0:a04f3049f206 33 }
jn80842 0:a04f3049f206 34 void key4Pressed(void) {
jn80842 0:a04f3049f206 35 pc.printf("%c",key4[buttonSide][buttonLevel]);
jn80842 0:a04f3049f206 36 }
jn80842 0:a04f3049f206 37 void key5Pressed(void) {
jn80842 0:a04f3049f206 38 pc.printf("%c",key5[buttonSide][buttonLevel]);
jn80842 0:a04f3049f206 39 }
jn80842 0:a04f3049f206 40
jn80842 0:a04f3049f206 41 void keyLeftHeld(void) {
jn80842 0:a04f3049f206 42 //pc.printf("in left mode\r\n");
jn80842 0:a04f3049f206 43 buttonSide = 0;
jn80842 0:a04f3049f206 44 pc.printf("%c",'0');
jn80842 0:a04f3049f206 45 }
jn80842 0:a04f3049f206 46 void keyLeftReleased(void) {
jn80842 0:a04f3049f206 47 //pc.printf("in right mode\r\n");
jn80842 0:a04f3049f206 48 buttonSide = 1;
jn80842 0:a04f3049f206 49 pc.printf("%c",'1');
jn80842 0:a04f3049f206 50 }
jn80842 0:a04f3049f206 51
jn80842 0:a04f3049f206 52 void keyLevelOff(void) {
jn80842 0:a04f3049f206 53 buttonLevel = 0;
jn80842 0:a04f3049f206 54 pc.printf("%c",'2');
jn80842 0:a04f3049f206 55 }
jn80842 0:a04f3049f206 56 void keyMidOn(void) {
jn80842 0:a04f3049f206 57 buttonLevel = 1;
jn80842 0:a04f3049f206 58 pc.printf("%c",'4');
jn80842 0:a04f3049f206 59 }
jn80842 0:a04f3049f206 60 void keyBottonOn(void) {
jn80842 0:a04f3049f206 61 buttonLevel = 2;
jn80842 0:a04f3049f206 62 pc.printf("%c",'6');
jn80842 0:a04f3049f206 63 }
jn80842 0:a04f3049f206 64
jn80842 0:a04f3049f206 65 int main() {
jn80842 0:a04f3049f206 66 button1.mode(PullUp);
jn80842 0:a04f3049f206 67 button2.mode(PullUp);
jn80842 0:a04f3049f206 68 button3.mode(PullUp);
jn80842 0:a04f3049f206 69 button4.mode(PullUp);
jn80842 0:a04f3049f206 70 button5.mode(PullUp);
jn80842 0:a04f3049f206 71 buttonBottom.mode(PullUp);
jn80842 0:a04f3049f206 72 buttonLeft.mode(PullUp);
jn80842 0:a04f3049f206 73 buttonMid.mode(PullUp);
jn80842 0:a04f3049f206 74
jn80842 0:a04f3049f206 75
jn80842 0:a04f3049f206 76 button1.attach_asserted(&key1Pressed);
jn80842 0:a04f3049f206 77 button2.attach_asserted(&key2Pressed);
jn80842 0:a04f3049f206 78 button3.attach_asserted(&key3Pressed);
jn80842 0:a04f3049f206 79 button4.attach_asserted(&key4Pressed);
jn80842 0:a04f3049f206 80 button5.attach_asserted(&key5Pressed);
jn80842 0:a04f3049f206 81
jn80842 0:a04f3049f206 82 //note that these are backwards from what you think they should be
jn80842 0:a04f3049f206 83 buttonLeft.attach_asserted_held(&keyLeftHeld);
jn80842 0:a04f3049f206 84 buttonLeft.attach_deasserted_held(&keyLeftReleased);
jn80842 0:a04f3049f206 85 //releasing either level button does the same thing
jn80842 0:a04f3049f206 86 buttonMid.attach_asserted_held(&keyLevelOff);
jn80842 0:a04f3049f206 87 buttonMid.attach_deasserted_held(&keyMidOn);
jn80842 0:a04f3049f206 88 buttonBottom.attach_asserted_held(&keyLevelOff);
jn80842 0:a04f3049f206 89 buttonBottom.attach_deasserted_held(&keyBottonOn);
jn80842 0:a04f3049f206 90
jn80842 0:a04f3049f206 91 button1.setSampleFrequency();
jn80842 0:a04f3049f206 92 button2.setSampleFrequency();
jn80842 0:a04f3049f206 93 button3.setSampleFrequency();
jn80842 0:a04f3049f206 94 button4.setSampleFrequency();
jn80842 0:a04f3049f206 95 button5.setSampleFrequency();
jn80842 0:a04f3049f206 96 buttonLeft.setSampleFrequency();
jn80842 0:a04f3049f206 97 buttonLeft.setSamplesTillHeld(2);
jn80842 0:a04f3049f206 98 buttonMid.setSampleFrequency();
jn80842 0:a04f3049f206 99 buttonMid.setSamplesTillHeld(2);
jn80842 0:a04f3049f206 100 buttonBottom.setSampleFrequency();
jn80842 0:a04f3049f206 101 buttonBottom.setSamplesTillHeld(2);
jn80842 0:a04f3049f206 102
jn80842 0:a04f3049f206 103 //indicate we're ready
jn80842 0:a04f3049f206 104 pc.printf("%c",'5');
jn80842 0:a04f3049f206 105
jn80842 0:a04f3049f206 106 while(1) {
jn80842 0:a04f3049f206 107 //do nothing forever
jn80842 0:a04f3049f206 108 }
jn80842 0:a04f3049f206 109 }