working, need to fix input bouncing

Dependencies:   mbed

Committer:
jaredwil
Date:
Fri Feb 13 19:22:58 2015 +0000
Revision:
0:b44cdf7cb6a5
Child:
1:ab859ed60719
This is working but there is a little bit of bouncing on inputs, but it will work

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jaredwil 0:b44cdf7cb6a5 1 #include "mbed.h"
jaredwil 0:b44cdf7cb6a5 2 #include <map>
jaredwil 0:b44cdf7cb6a5 3
jaredwil 0:b44cdf7cb6a5 4 //Initialize serial comms
jaredwil 0:b44cdf7cb6a5 5 Serial pc(USBTX, USBRX);
jaredwil 0:b44cdf7cb6a5 6
jaredwil 0:b44cdf7cb6a5 7 PwmOut PWM1(p21);
jaredwil 0:b44cdf7cb6a5 8
jaredwil 0:b44cdf7cb6a5 9 DigitalOut row1(p25);
jaredwil 0:b44cdf7cb6a5 10 DigitalOut row2(p22);
jaredwil 0:b44cdf7cb6a5 11 DigitalOut row3(p23);
jaredwil 0:b44cdf7cb6a5 12 DigitalOut row4(p24);
jaredwil 0:b44cdf7cb6a5 13
jaredwil 0:b44cdf7cb6a5 14 DigitalIn col1(p20);
jaredwil 0:b44cdf7cb6a5 15 DigitalIn col2(p19);
jaredwil 0:b44cdf7cb6a5 16 DigitalIn col3(p18);
jaredwil 0:b44cdf7cb6a5 17 DigitalIn col4(p17);
jaredwil 0:b44cdf7cb6a5 18 Timer t1;
jaredwil 0:b44cdf7cb6a5 19
jaredwil 0:b44cdf7cb6a5 20 //map
jaredwil 0:b44cdf7cb6a5 21 map<int, char> keypadMap;
jaredwil 0:b44cdf7cb6a5 22
jaredwil 0:b44cdf7cb6a5 23 //Mores Code -> Character Map
jaredwil 0:b44cdf7cb6a5 24 void init(){
jaredwil 0:b44cdf7cb6a5 25 keypadMap[0x11]='1';
jaredwil 0:b44cdf7cb6a5 26 keypadMap[0x12]='2';
jaredwil 0:b44cdf7cb6a5 27 keypadMap[0x14]='3';
jaredwil 0:b44cdf7cb6a5 28 keypadMap[0x18]='A';
jaredwil 0:b44cdf7cb6a5 29 keypadMap[0x21]='4';
jaredwil 0:b44cdf7cb6a5 30 keypadMap[0x22]='5';
jaredwil 0:b44cdf7cb6a5 31 keypadMap[0x24]='6';
jaredwil 0:b44cdf7cb6a5 32 keypadMap[0x28]='B';
jaredwil 0:b44cdf7cb6a5 33 keypadMap[0x41]='7';
jaredwil 0:b44cdf7cb6a5 34 keypadMap[0x42]='8';
jaredwil 0:b44cdf7cb6a5 35 keypadMap[0x44]='9';
jaredwil 0:b44cdf7cb6a5 36 keypadMap[0x48]='C';
jaredwil 0:b44cdf7cb6a5 37 keypadMap[0x81]='*';
jaredwil 0:b44cdf7cb6a5 38 keypadMap[0x82]='0';
jaredwil 0:b44cdf7cb6a5 39 keypadMap[0x84]='#';
jaredwil 0:b44cdf7cb6a5 40 keypadMap[0x88]='D';
jaredwil 0:b44cdf7cb6a5 41 }
jaredwil 0:b44cdf7cb6a5 42
jaredwil 0:b44cdf7cb6a5 43 int main() {
jaredwil 0:b44cdf7cb6a5 44 init();
jaredwil 0:b44cdf7cb6a5 45 //Initialize rows to 0
jaredwil 0:b44cdf7cb6a5 46 row1 = 0;
jaredwil 0:b44cdf7cb6a5 47 row2 = 0;
jaredwil 0:b44cdf7cb6a5 48 row3 = 0;
jaredwil 0:b44cdf7cb6a5 49 row4 = 0;
jaredwil 0:b44cdf7cb6a5 50 t1.start();
jaredwil 0:b44cdf7cb6a5 51 int input = 0x00;
jaredwil 0:b44cdf7cb6a5 52 while(1) {
jaredwil 0:b44cdf7cb6a5 53 //Keep each led lit for 4ms
jaredwil 0:b44cdf7cb6a5 54 switch(t1.read_ms()%4){
jaredwil 0:b44cdf7cb6a5 55 case 0:
jaredwil 0:b44cdf7cb6a5 56 row1 = 1;
jaredwil 0:b44cdf7cb6a5 57 input |= 0x10;
jaredwil 0:b44cdf7cb6a5 58 row4 = 0;
jaredwil 0:b44cdf7cb6a5 59 break;
jaredwil 0:b44cdf7cb6a5 60 case 1:
jaredwil 0:b44cdf7cb6a5 61 row2 = 1;
jaredwil 0:b44cdf7cb6a5 62 input |= 0x20;
jaredwil 0:b44cdf7cb6a5 63 row1 = 0;
jaredwil 0:b44cdf7cb6a5 64 break;
jaredwil 0:b44cdf7cb6a5 65 case 2:
jaredwil 0:b44cdf7cb6a5 66 row3 = 1;
jaredwil 0:b44cdf7cb6a5 67 input |= 0x40;
jaredwil 0:b44cdf7cb6a5 68 row2 = 0;
jaredwil 0:b44cdf7cb6a5 69 break;
jaredwil 0:b44cdf7cb6a5 70 case 3:
jaredwil 0:b44cdf7cb6a5 71 row4 = 1;
jaredwil 0:b44cdf7cb6a5 72 input |= 0x80;
jaredwil 0:b44cdf7cb6a5 73 row3 = 0;
jaredwil 0:b44cdf7cb6a5 74 break;
jaredwil 0:b44cdf7cb6a5 75 }
jaredwil 0:b44cdf7cb6a5 76 if(col1 == 1)
jaredwil 0:b44cdf7cb6a5 77 input |= 0x01;
jaredwil 0:b44cdf7cb6a5 78 else if(col2 == 1)
jaredwil 0:b44cdf7cb6a5 79 input |= 0x02;
jaredwil 0:b44cdf7cb6a5 80 else if(col3 == 1)
jaredwil 0:b44cdf7cb6a5 81 input |= 0x04;
jaredwil 0:b44cdf7cb6a5 82 else if(col4 == 1)
jaredwil 0:b44cdf7cb6a5 83 input |= 0x08;
jaredwil 0:b44cdf7cb6a5 84
jaredwil 0:b44cdf7cb6a5 85 char c = keypadMap[input]; //assign charcter based on input
jaredwil 0:b44cdf7cb6a5 86
jaredwil 0:b44cdf7cb6a5 87 if(c != 0){
jaredwil 0:b44cdf7cb6a5 88 pc.printf("%c\r",c); //print input and char
jaredwil 0:b44cdf7cb6a5 89 }
jaredwil 0:b44cdf7cb6a5 90
jaredwil 0:b44cdf7cb6a5 91
jaredwil 0:b44cdf7cb6a5 92 input = 0x00;
jaredwil 0:b44cdf7cb6a5 93
jaredwil 0:b44cdf7cb6a5 94
jaredwil 0:b44cdf7cb6a5 95 }
jaredwil 0:b44cdf7cb6a5 96 }