Avinash Repaka / Mbed 2 deprecated Lab4_519

Dependencies:   mbed

Committer:
avinashr
Date:
Fri Mar 27 03:53:57 2015 +0000
Revision:
4:95fe80130442
Parent:
2:2cc70773996b
Elevator code, working on test bench

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 4:95fe80130442 30 //fflush(stdout);
avinashr 2:2cc70773996b 31 switch(ch){
avinashr 2:2cc70773996b 32 case '1': floorChosen(1); break;
avinashr 2:2cc70773996b 33 case '2': floorChosen(2); break;
avinashr 2:2cc70773996b 34 case '3': floorChosen(3); break;
avinashr 2:2cc70773996b 35 case '4': floorChosen(4); break;
avinashr 2:2cc70773996b 36 case '5': floorChosen(5); break;
avinashr 2:2cc70773996b 37 default: break;
avinashr 2:2cc70773996b 38 }
avinashr 2:2cc70773996b 39 }
avinashr 2:2cc70773996b 40
avinashr 1:4ec28912c9e7 41 void keyOnePressed (){
avinashr 1:4ec28912c9e7 42 keypadTicker .detach();
avinashr 2:2cc70773996b 43 if (index == 1)
avinashr 2:2cc70773996b 44 keyPressed('1');
avinashr 2:2cc70773996b 45 //pc.printf(": 1 is pressed :");
avinashr 2:2cc70773996b 46 else if (index == 2)
avinashr 2:2cc70773996b 47 keyPressed('4');
avinashr 2:2cc70773996b 48 //pc.printf(": 4 is pressed :");
avinashr 2:2cc70773996b 49 else if (index ==3)
avinashr 2:2cc70773996b 50 keyPressed('7');
avinashr 2:2cc70773996b 51 //pc.printf(": 7 is pressed :");
avinashr 2:2cc70773996b 52 else if (index ==4)
avinashr 2:2cc70773996b 53 keyPressed('*');
avinashr 2:2cc70773996b 54 //pc.printf(": * is pressed :");
avinashr 1:4ec28912c9e7 55 }
avinashr 1:4ec28912c9e7 56
avinashr 1:4ec28912c9e7 57 void keyOneReleased (){
avinashr 1:4ec28912c9e7 58 keypadTicker .attach(&changeConfiguration,scanInterval);
avinashr 1:4ec28912c9e7 59 }
avinashr 1:4ec28912c9e7 60
avinashr 1:4ec28912c9e7 61 void keyTwoPressed (){
avinashr 1:4ec28912c9e7 62 keypadTicker .detach();
avinashr 2:2cc70773996b 63 if (index == 1)
avinashr 2:2cc70773996b 64 keyPressed('2');
avinashr 2:2cc70773996b 65 //pc.printf(": 2 is pressed : );
avinashr 2:2cc70773996b 66 else if (index == 2)
avinashr 2:2cc70773996b 67 keyPressed('5');
avinashr 2:2cc70773996b 68 //pc.printf(": 5 is pressed :");
avinashr 2:2cc70773996b 69 else if (index ==3)
avinashr 2:2cc70773996b 70 keyPressed('8');
avinashr 2:2cc70773996b 71 //pc.printf(": 8 is pressed :");
avinashr 2:2cc70773996b 72 else if (index ==4)
avinashr 2:2cc70773996b 73 keyPressed('0');
avinashr 2:2cc70773996b 74 //pc.printf(": 0 is pressed :");
avinashr 1:4ec28912c9e7 75 }
avinashr 1:4ec28912c9e7 76
avinashr 1:4ec28912c9e7 77 void keyTwoReleased (){
avinashr 1:4ec28912c9e7 78 keypadTicker .attach(&changeConfiguration,scanInterval);
avinashr 1:4ec28912c9e7 79 }
avinashr 1:4ec28912c9e7 80
avinashr 1:4ec28912c9e7 81 void keyThreePressed (){
avinashr 1:4ec28912c9e7 82 keypadTicker .detach();
avinashr 1:4ec28912c9e7 83 if (index == 1)
avinashr 2:2cc70773996b 84 keyPressed('3');
avinashr 2:2cc70773996b 85 //pc.printf(": 3 is pressed :");
avinashr 2:2cc70773996b 86 else if (index == 2)
avinashr 2:2cc70773996b 87 keyPressed('6');
avinashr 2:2cc70773996b 88 //pc.printf(": 6 is pressed :");
avinashr 2:2cc70773996b 89 else if (index ==3)
avinashr 2:2cc70773996b 90 keyPressed('9');
avinashr 2:2cc70773996b 91 //pc.printf(": 9 is pressed :");
avinashr 2:2cc70773996b 92 else if (index ==4)
avinashr 2:2cc70773996b 93 keyPressed('#');
avinashr 2:2cc70773996b 94 //pc.printf(": # is pressed :");
avinashr 1:4ec28912c9e7 95 }
avinashr 1:4ec28912c9e7 96
avinashr 1:4ec28912c9e7 97 void keyThreeReleased (){
avinashr 1:4ec28912c9e7 98 keypadTicker .attach(&changeConfiguration,scanInterval);
avinashr 1:4ec28912c9e7 99 }
avinashr 1:4ec28912c9e7 100
avinashr 1:4ec28912c9e7 101 void keyFourPressed (){
avinashr 1:4ec28912c9e7 102 keypadTicker .detach();
avinashr 2:2cc70773996b 103 if (index == 1)
avinashr 2:2cc70773996b 104 keyPressed('A');
avinashr 2:2cc70773996b 105 //pc.printf(": A is pressed :");
avinashr 2:2cc70773996b 106 else if (index == 2)
avinashr 2:2cc70773996b 107 keyPressed('B');
avinashr 2:2cc70773996b 108 //pc.printf(": B is pressed :");
avinashr 2:2cc70773996b 109 else if (index ==3)
avinashr 2:2cc70773996b 110 keyPressed('C');
avinashr 2:2cc70773996b 111 //pc.printf(": c is pressed :");
avinashr 2:2cc70773996b 112 else if (index ==4)
avinashr 2:2cc70773996b 113 keyPressed('D');
avinashr 2:2cc70773996b 114 //pc.printf(": D is pressed :");
avinashr 1:4ec28912c9e7 115 }
avinashr 1:4ec28912c9e7 116
avinashr 1:4ec28912c9e7 117 void keyFourReleased (){
avinashr 1:4ec28912c9e7 118 keypadTicker .attach(&changeConfiguration,scanInterval);
avinashr 1:4ec28912c9e7 119 }
avinashr 1:4ec28912c9e7 120
avinashr 1:4ec28912c9e7 121 void changeConfiguration(){
avinashr 1:4ec28912c9e7 122 index =index +1;
avinashr 1:4ec28912c9e7 123 if(index == 5)
avinashr 1:4ec28912c9e7 124 index = 1;
avinashr 1:4ec28912c9e7 125 switch (index )
avinashr 1:4ec28912c9e7 126 {
avinashr 1:4ec28912c9e7 127 case 1:
avinashr 1:4ec28912c9e7 128 outputOne = 0;
avinashr 1:4ec28912c9e7 129 outputTwo = 1;
avinashr 1:4ec28912c9e7 130 outputThree = 1;
avinashr 1:4ec28912c9e7 131 outputFour = 1;
avinashr 1:4ec28912c9e7 132 break;
avinashr 1:4ec28912c9e7 133 case 2:
avinashr 1:4ec28912c9e7 134 outputOne = 1;
avinashr 1:4ec28912c9e7 135 outputTwo = 0;
avinashr 1:4ec28912c9e7 136 outputThree = 1;
avinashr 1:4ec28912c9e7 137 outputFour = 1;
avinashr 1:4ec28912c9e7 138 break;
avinashr 1:4ec28912c9e7 139 case 3:
avinashr 1:4ec28912c9e7 140 outputOne = 1;
avinashr 1:4ec28912c9e7 141 outputTwo = 1;
avinashr 1:4ec28912c9e7 142 outputThree = 0;
avinashr 1:4ec28912c9e7 143 outputFour = 1;
avinashr 1:4ec28912c9e7 144 break;
avinashr 1:4ec28912c9e7 145 case 4:
avinashr 1:4ec28912c9e7 146 outputOne = 1;
avinashr 1:4ec28912c9e7 147 outputTwo = 1;
avinashr 1:4ec28912c9e7 148 outputThree = 1;
avinashr 1:4ec28912c9e7 149 outputFour = 0;
avinashr 1:4ec28912c9e7 150 break;
avinashr 1:4ec28912c9e7 151 default : break;
avinashr 1:4ec28912c9e7 152 }
avinashr 1:4ec28912c9e7 153 }
avinashr 1:4ec28912c9e7 154
avinashr 1:4ec28912c9e7 155 void initializeKeypad(){
avinashr 1:4ec28912c9e7 156 outputOne = 1;
avinashr 1:4ec28912c9e7 157 outputTwo = 1;
avinashr 1:4ec28912c9e7 158 outputThree = 1;
avinashr 1:4ec28912c9e7 159 outputFour = 1;
avinashr 1:4ec28912c9e7 160 inputOne.fall(&keyOnePressed);
avinashr 1:4ec28912c9e7 161 inputOne.rise(&keyOneReleased);
avinashr 1:4ec28912c9e7 162 inputTwo.fall(&keyTwoPressed);
avinashr 1:4ec28912c9e7 163 inputTwo.rise(&keyTwoReleased);
avinashr 1:4ec28912c9e7 164 inputThree.fall(&keyThreePressed);
avinashr 1:4ec28912c9e7 165 inputThree.rise(&keyThreeReleased);
avinashr 1:4ec28912c9e7 166 inputFour.fall(&keyFourPressed);
avinashr 1:4ec28912c9e7 167 inputFour.rise(&keyFourReleased);
avinashr 1:4ec28912c9e7 168 keypadTicker.attach(&changeConfiguration, scanInterval);
avinashr 2:2cc70773996b 169 }
avinashr 2:2cc70773996b 170
avinashr 2:2cc70773996b 171 #endif