Avinash Repaka / Mbed 2 deprecated Lab4_519

Dependencies:   mbed

Committer:
avinashr
Date:
Thu Mar 26 06:10:56 2015 +0000
Revision:
2:2cc70773996b
Parent:
1:4ec28912c9e7
Child:
4:95fe80130442
Basic algorithm in place;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
avinashr 1:4ec28912c9e7 1 #include "mbed.h"
avinashr 2:2cc70773996b 2 #include "GlobalObjects.h"
avinashr 2:2cc70773996b 3
avinashr 2:2cc70773996b 4 #ifndef KEYPAD_H
avinashr 2:2cc70773996b 5 #define KEYPAD_H
avinashr 1:4ec28912c9e7 6
avinashr 1:4ec28912c9e7 7 //selection pin
avinashr 1:4ec28912c9e7 8 volatile int index = 1;
avinashr 1:4ec28912c9e7 9
avinashr 1:4ec28912c9e7 10 //Row pins
avinashr 1:4ec28912c9e7 11 InterruptIn inputOne(p8);
avinashr 1:4ec28912c9e7 12 InterruptIn inputTwo(p7);
avinashr 1:4ec28912c9e7 13 InterruptIn inputThree(p6);
avinashr 1:4ec28912c9e7 14 InterruptIn inputFour(p5);
avinashr 1:4ec28912c9e7 15
avinashr 1:4ec28912c9e7 16 //Coloumn pins
avinashr 1:4ec28912c9e7 17 DigitalOut outputOne(p9);
avinashr 1:4ec28912c9e7 18 DigitalOut outputTwo(p10);
avinashr 1:4ec28912c9e7 19 DigitalOut outputThree(p11);
avinashr 1:4ec28912c9e7 20 DigitalOut outputFour(p12);
avinashr 1:4ec28912c9e7 21
avinashr 1:4ec28912c9e7 22 //Timer to scan
avinashr 1:4ec28912c9e7 23 Ticker keypadTicker ;
avinashr 1:4ec28912c9e7 24 float scanInterval = 0.004; //4ms
avinashr 1:4ec28912c9e7 25
avinashr 1:4ec28912c9e7 26 void changeConfiguration();
avinashr 1:4ec28912c9e7 27
avinashr 2:2cc70773996b 28 void keyPressed (char ch){
avinashr 2:2cc70773996b 29 pc.printf(": %c is pressed :",ch);
avinashr 2:2cc70773996b 30 switch(ch){
avinashr 2:2cc70773996b 31 case '1': floorChosen(1); break;
avinashr 2:2cc70773996b 32 case '2': floorChosen(2); break;
avinashr 2:2cc70773996b 33 case '3': floorChosen(3); break;
avinashr 2:2cc70773996b 34 case '4': floorChosen(4); break;
avinashr 2:2cc70773996b 35 case '5': floorChosen(5); break;
avinashr 2:2cc70773996b 36 default: break;
avinashr 2:2cc70773996b 37 }
avinashr 2:2cc70773996b 38 }
avinashr 2:2cc70773996b 39
avinashr 1:4ec28912c9e7 40 void keyOnePressed (){
avinashr 1:4ec28912c9e7 41 keypadTicker .detach();
avinashr 2:2cc70773996b 42 if (index == 1)
avinashr 2:2cc70773996b 43 keyPressed('1');
avinashr 2:2cc70773996b 44 //pc.printf(": 1 is pressed :");
avinashr 2:2cc70773996b 45 else if (index == 2)
avinashr 2:2cc70773996b 46 keyPressed('4');
avinashr 2:2cc70773996b 47 //pc.printf(": 4 is pressed :");
avinashr 2:2cc70773996b 48 else if (index ==3)
avinashr 2:2cc70773996b 49 keyPressed('7');
avinashr 2:2cc70773996b 50 //pc.printf(": 7 is pressed :");
avinashr 2:2cc70773996b 51 else if (index ==4)
avinashr 2:2cc70773996b 52 keyPressed('*');
avinashr 2:2cc70773996b 53 //pc.printf(": * is pressed :");
avinashr 1:4ec28912c9e7 54 }
avinashr 1:4ec28912c9e7 55
avinashr 1:4ec28912c9e7 56 void keyOneReleased (){
avinashr 1:4ec28912c9e7 57 keypadTicker .attach(&changeConfiguration,scanInterval);
avinashr 1:4ec28912c9e7 58 }
avinashr 1:4ec28912c9e7 59
avinashr 1:4ec28912c9e7 60 void keyTwoPressed (){
avinashr 1:4ec28912c9e7 61 keypadTicker .detach();
avinashr 2:2cc70773996b 62 if (index == 1)
avinashr 2:2cc70773996b 63 keyPressed('2');
avinashr 2:2cc70773996b 64 //pc.printf(": 2 is pressed : );
avinashr 2:2cc70773996b 65 else if (index == 2)
avinashr 2:2cc70773996b 66 keyPressed('5');
avinashr 2:2cc70773996b 67 //pc.printf(": 5 is pressed :");
avinashr 2:2cc70773996b 68 else if (index ==3)
avinashr 2:2cc70773996b 69 keyPressed('8');
avinashr 2:2cc70773996b 70 //pc.printf(": 8 is pressed :");
avinashr 2:2cc70773996b 71 else if (index ==4)
avinashr 2:2cc70773996b 72 keyPressed('0');
avinashr 2:2cc70773996b 73 //pc.printf(": 0 is pressed :");
avinashr 1:4ec28912c9e7 74 }
avinashr 1:4ec28912c9e7 75
avinashr 1:4ec28912c9e7 76 void keyTwoReleased (){
avinashr 1:4ec28912c9e7 77 keypadTicker .attach(&changeConfiguration,scanInterval);
avinashr 1:4ec28912c9e7 78 }
avinashr 1:4ec28912c9e7 79
avinashr 1:4ec28912c9e7 80 void keyThreePressed (){
avinashr 1:4ec28912c9e7 81 keypadTicker .detach();
avinashr 1:4ec28912c9e7 82 if (index == 1)
avinashr 2:2cc70773996b 83 keyPressed('3');
avinashr 2:2cc70773996b 84 //pc.printf(": 3 is pressed :");
avinashr 2:2cc70773996b 85 else if (index == 2)
avinashr 2:2cc70773996b 86 keyPressed('6');
avinashr 2:2cc70773996b 87 //pc.printf(": 6 is pressed :");
avinashr 2:2cc70773996b 88 else if (index ==3)
avinashr 2:2cc70773996b 89 keyPressed('9');
avinashr 2:2cc70773996b 90 //pc.printf(": 9 is pressed :");
avinashr 2:2cc70773996b 91 else if (index ==4)
avinashr 2:2cc70773996b 92 keyPressed('#');
avinashr 2:2cc70773996b 93 //pc.printf(": # is pressed :");
avinashr 1:4ec28912c9e7 94 }
avinashr 1:4ec28912c9e7 95
avinashr 1:4ec28912c9e7 96 void keyThreeReleased (){
avinashr 1:4ec28912c9e7 97 keypadTicker .attach(&changeConfiguration,scanInterval);
avinashr 1:4ec28912c9e7 98 }
avinashr 1:4ec28912c9e7 99
avinashr 1:4ec28912c9e7 100 void keyFourPressed (){
avinashr 1:4ec28912c9e7 101 keypadTicker .detach();
avinashr 2:2cc70773996b 102 if (index == 1)
avinashr 2:2cc70773996b 103 keyPressed('A');
avinashr 2:2cc70773996b 104 //pc.printf(": A is pressed :");
avinashr 2:2cc70773996b 105 else if (index == 2)
avinashr 2:2cc70773996b 106 keyPressed('B');
avinashr 2:2cc70773996b 107 //pc.printf(": B is pressed :");
avinashr 2:2cc70773996b 108 else if (index ==3)
avinashr 2:2cc70773996b 109 keyPressed('C');
avinashr 2:2cc70773996b 110 //pc.printf(": c is pressed :");
avinashr 2:2cc70773996b 111 else if (index ==4)
avinashr 2:2cc70773996b 112 keyPressed('D');
avinashr 2:2cc70773996b 113 //pc.printf(": D is pressed :");
avinashr 1:4ec28912c9e7 114 }
avinashr 1:4ec28912c9e7 115
avinashr 1:4ec28912c9e7 116 void keyFourReleased (){
avinashr 1:4ec28912c9e7 117 keypadTicker .attach(&changeConfiguration,scanInterval);
avinashr 1:4ec28912c9e7 118 }
avinashr 1:4ec28912c9e7 119
avinashr 1:4ec28912c9e7 120 void changeConfiguration(){
avinashr 1:4ec28912c9e7 121 index =index +1;
avinashr 1:4ec28912c9e7 122 if(index == 5)
avinashr 1:4ec28912c9e7 123 index = 1;
avinashr 1:4ec28912c9e7 124 switch (index )
avinashr 1:4ec28912c9e7 125 {
avinashr 1:4ec28912c9e7 126 case 1:
avinashr 1:4ec28912c9e7 127 outputOne = 0;
avinashr 1:4ec28912c9e7 128 outputTwo = 1;
avinashr 1:4ec28912c9e7 129 outputThree = 1;
avinashr 1:4ec28912c9e7 130 outputFour = 1;
avinashr 1:4ec28912c9e7 131 break;
avinashr 1:4ec28912c9e7 132 case 2:
avinashr 1:4ec28912c9e7 133 outputOne = 1;
avinashr 1:4ec28912c9e7 134 outputTwo = 0;
avinashr 1:4ec28912c9e7 135 outputThree = 1;
avinashr 1:4ec28912c9e7 136 outputFour = 1;
avinashr 1:4ec28912c9e7 137 break;
avinashr 1:4ec28912c9e7 138 case 3:
avinashr 1:4ec28912c9e7 139 outputOne = 1;
avinashr 1:4ec28912c9e7 140 outputTwo = 1;
avinashr 1:4ec28912c9e7 141 outputThree = 0;
avinashr 1:4ec28912c9e7 142 outputFour = 1;
avinashr 1:4ec28912c9e7 143 break;
avinashr 1:4ec28912c9e7 144 case 4:
avinashr 1:4ec28912c9e7 145 outputOne = 1;
avinashr 1:4ec28912c9e7 146 outputTwo = 1;
avinashr 1:4ec28912c9e7 147 outputThree = 1;
avinashr 1:4ec28912c9e7 148 outputFour = 0;
avinashr 1:4ec28912c9e7 149 break;
avinashr 1:4ec28912c9e7 150 default : break;
avinashr 1:4ec28912c9e7 151 }
avinashr 1:4ec28912c9e7 152 }
avinashr 1:4ec28912c9e7 153
avinashr 1:4ec28912c9e7 154 void initializeKeypad(){
avinashr 1:4ec28912c9e7 155 outputOne = 1;
avinashr 1:4ec28912c9e7 156 outputTwo = 1;
avinashr 1:4ec28912c9e7 157 outputThree = 1;
avinashr 1:4ec28912c9e7 158 outputFour = 1;
avinashr 1:4ec28912c9e7 159 inputOne.fall(&keyOnePressed);
avinashr 1:4ec28912c9e7 160 inputOne.rise(&keyOneReleased);
avinashr 1:4ec28912c9e7 161 inputTwo.fall(&keyTwoPressed);
avinashr 1:4ec28912c9e7 162 inputTwo.rise(&keyTwoReleased);
avinashr 1:4ec28912c9e7 163 inputThree.fall(&keyThreePressed);
avinashr 1:4ec28912c9e7 164 inputThree.rise(&keyThreeReleased);
avinashr 1:4ec28912c9e7 165 inputFour.fall(&keyFourPressed);
avinashr 1:4ec28912c9e7 166 inputFour.rise(&keyFourReleased);
avinashr 1:4ec28912c9e7 167 keypadTicker.attach(&changeConfiguration, scanInterval);
avinashr 2:2cc70773996b 168 }
avinashr 2:2cc70773996b 169
avinashr 2:2cc70773996b 170 #endif