Interactive Device Design / Mbed 2 deprecated idd_hw2_jn80842_fingertips

Dependencies:   PinDetect mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "PinDetect.h"
00003 
00004 Serial pc(USBTX, USBRX); // tx, rx
00005 
00006 PinDetect button1(D7);
00007 PinDetect button2(D6);
00008 PinDetect button3(D5);
00009 PinDetect button4(D4);
00010 PinDetect button5(D3);
00011 
00012 PinDetect buttonBottom(PTC0);
00013 PinDetect buttonLeft(PTC7);
00014 PinDetect buttonMid(PTC5);
00015 
00016 int buttonSide = 0; //initialize to left
00017 int buttonLevel = 0; //initialize to top
00018 
00019 char key1[2][3] = {{'Q','A','Z'}, {'Y','H','N'}};
00020 char key2[2][3] = {{'W','S','X'}, {'U','J','M'}};
00021 char key3[2][3] = {{'E','D','C'}, {'I','K',' '}};
00022 char key4[2][3] = {{'R','F','V'}, {'O','L','.'}};
00023 char key5[2][3] = {{'T','G','B'}, {'P','!','?'}};
00024  
00025 void key1Pressed(void) {
00026     pc.printf("%c",key1[buttonSide][buttonLevel]);
00027 }
00028 void key2Pressed(void) {
00029     pc.printf("%c",key2[buttonSide][buttonLevel]);
00030 }
00031 void key3Pressed(void) {
00032     pc.printf("%c",key3[buttonSide][buttonLevel]);
00033 }
00034 void key4Pressed(void) {
00035     pc.printf("%c",key4[buttonSide][buttonLevel]);
00036 }
00037 void key5Pressed(void) {
00038     pc.printf("%c",key5[buttonSide][buttonLevel]);
00039 }
00040 
00041 void keyLeftHeld(void) {
00042     //pc.printf("in left mode\r\n");
00043     buttonSide = 0;
00044     pc.printf("%c",'0');
00045 }
00046 void keyLeftReleased(void) {
00047     //pc.printf("in right mode\r\n");
00048     buttonSide = 1;
00049     pc.printf("%c",'1');
00050 }
00051 
00052 void keyLevelOff(void) {
00053     buttonLevel = 0;
00054     pc.printf("%c",'2');
00055 }
00056 void keyMidOn(void) {
00057     buttonLevel = 1;
00058     pc.printf("%c",'4');
00059 }
00060 void keyBottonOn(void) {
00061     buttonLevel = 2;
00062     pc.printf("%c",'6');
00063 }
00064 
00065 int main() {
00066     button1.mode(PullUp);
00067     button2.mode(PullUp);
00068     button3.mode(PullUp);
00069     button4.mode(PullUp);
00070     button5.mode(PullUp);
00071     buttonBottom.mode(PullUp);
00072     buttonLeft.mode(PullUp);
00073     buttonMid.mode(PullUp);
00074 
00075     
00076     button1.attach_asserted(&key1Pressed);
00077     button2.attach_asserted(&key2Pressed);
00078     button3.attach_asserted(&key3Pressed);
00079     button4.attach_asserted(&key4Pressed);
00080     button5.attach_asserted(&key5Pressed);
00081 
00082     //note that these are backwards from what you think they should be
00083     buttonLeft.attach_asserted_held(&keyLeftHeld);
00084     buttonLeft.attach_deasserted_held(&keyLeftReleased);
00085     //releasing either level button does the same thing
00086     buttonMid.attach_asserted_held(&keyLevelOff);
00087     buttonMid.attach_deasserted_held(&keyMidOn);
00088     buttonBottom.attach_asserted_held(&keyLevelOff);
00089     buttonBottom.attach_deasserted_held(&keyBottonOn);
00090 
00091     button1.setSampleFrequency();
00092     button2.setSampleFrequency();
00093     button3.setSampleFrequency();
00094     button4.setSampleFrequency();
00095     button5.setSampleFrequency();
00096     buttonLeft.setSampleFrequency();
00097     buttonLeft.setSamplesTillHeld(2);
00098     buttonMid.setSampleFrequency();
00099     buttonMid.setSamplesTillHeld(2);
00100     buttonBottom.setSampleFrequency();
00101     buttonBottom.setSamplesTillHeld(2);
00102     
00103     //indicate we're ready
00104     pc.printf("%c",'5');
00105     
00106     while(1) {
00107         //do nothing forever
00108     }
00109 }