Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp@8:7e3f92f0dc47, 2015-10-18 (annotated)
- Committer:
- prithviganeshk
- Date:
- Sun Oct 18 19:06:39 2015 +0000
- Revision:
- 8:7e3f92f0dc47
- Parent:
- 7:3bed3e005200
elevator extra credit
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| prithviganeshk | 8:7e3f92f0dc47 | 1 | #include "mbed.h" |
| prithviganeshk | 8:7e3f92f0dc47 | 2 | #include "rtos.h |
| jiteshg | 2:bf817b299c19 | 3 | |
| jiteshg | 2:bf817b299c19 | 4 | PwmOut pwm1(p21); //Servo Motor-1 PWM channel |
| jiteshg | 2:bf817b299c19 | 5 | PwmOut pwm2(p22); //Servo Motor-2 PWM channel |
| jiteshg | 2:bf817b299c19 | 6 | |
| jiteshg | 2:bf817b299c19 | 7 | DigitalOut dc1(p5); //DC motor input-1 |
| jiteshg | 2:bf817b299c19 | 8 | DigitalOut dc2(p6); //DC motor input-2 |
| jiteshg | 2:bf817b299c19 | 9 | PwmOut pwm3(p23); //DC motor PWM channel |
| jiteshg | 2:bf817b299c19 | 10 | |
| jiteshg | 3:66a52943c525 | 11 | AnalogIn button(p15); //Analog input from the floor buttons |
| jiteshg | 4:acb62dee5ba9 | 12 | InterruptIn event(p7); //Interrupt for rising and falling edge detection from IR |
| jiteshg | 3:66a52943c525 | 13 | |
| jiteshg | 4:acb62dee5ba9 | 14 | Timer timer; //Timer to read falling and rising edge time |
| prithviganeshk | 8:7e3f92f0dc47 | 15 | Timer timer2; |
| jiteshg | 4:acb62dee5ba9 | 16 | Serial pc(USBTX, USBRX);//Serial Communication |
| jiteshg | 0:fd080fb55bae | 17 | |
| prithviganeshk | 8:7e3f92f0dc47 | 18 | //Functions |
| jiteshg | 2:bf817b299c19 | 19 | void openGate(); |
| jiteshg | 2:bf817b299c19 | 20 | void closeGate(); |
| jiteshg | 4:acb62dee5ba9 | 21 | void rising(); |
| jiteshg | 4:acb62dee5ba9 | 22 | void falling(); |
| prithviganeshk | 8:7e3f92f0dc47 | 23 | void read_button(void const *args); |
| prithviganeshk | 8:7e3f92f0dc47 | 24 | void addtoarray(int val); |
| jiteshg | 3:66a52943c525 | 25 | int getState(float adc_val); |
| jiteshg | 3:66a52943c525 | 26 | |
| prithviganeshk | 8:7e3f92f0dc47 | 27 | //Global variables |
| jiteshg | 4:acb62dee5ba9 | 28 | int begin,end = 0; |
| prithviganeshk | 8:7e3f92f0dc47 | 29 | int dir = 1; // 1 is up and 0 is down |
| prithviganeshk | 8:7e3f92f0dc47 | 30 | int destinationState = 1; // Destination floor |
| prithviganeshk | 8:7e3f92f0dc47 | 31 | int currentState = 1; //Current floorfloat frequency = 0; |
| prithviganeshk | 8:7e3f92f0dc47 | 32 | |
| prithviganeshk | 8:7e3f92f0dc47 | 33 | //Global arrays |
| prithviganeshk | 8:7e3f92f0dc47 | 34 | int fvalues[] = {0,100,250,500,700,1000}; |
| prithviganeshk | 8:7e3f92f0dc47 | 35 | int press[4]; // to store the total number of keypresses |
| prithviganeshk | 8:7e3f92f0dc47 | 36 | |
| jiteshg | 2:bf817b299c19 | 37 | |
| jiteshg | 0:fd080fb55bae | 38 | int main() { |
| prithviganeshk | 8:7e3f92f0dc47 | 39 | |
| prithviganeshk | 8:7e3f92f0dc47 | 40 | int val; |
| prithviganeshk | 8:7e3f92f0dc47 | 41 | int i,temp =0; |
| prithviganeshk | 8:7e3f92f0dc47 | 42 | int flag_up =0; |
| prithviganeshk | 8:7e3f92f0dc47 | 43 | int flag_down =0; |
| prithviganeshk | 8:7e3f92f0dc47 | 44 | |
| prithviganeshk | 8:7e3f92f0dc47 | 45 | press[0] = 0; |
| prithviganeshk | 8:7e3f92f0dc47 | 46 | press[1] = 0; |
| prithviganeshk | 8:7e3f92f0dc47 | 47 | press[2] = 0; |
| prithviganeshk | 8:7e3f92f0dc47 | 48 | press[3] = 0; |
| prithviganeshk | 8:7e3f92f0dc47 | 49 | |
| jiteshg | 4:acb62dee5ba9 | 50 | timer.start(); |
| jiteshg | 4:acb62dee5ba9 | 51 | event.rise(&rising); |
| jiteshg | 4:acb62dee5ba9 | 52 | event.fall(&falling); |
| prithviganeshk | 8:7e3f92f0dc47 | 53 | |
| jiteshg | 2:bf817b299c19 | 54 | //Setting dc1 to high and dc2 to low initially |
| jiteshg | 4:acb62dee5ba9 | 55 | dc1 = 0; |
| jiteshg | 4:acb62dee5ba9 | 56 | dc2 = 1; |
| prithviganeshk | 8:7e3f92f0dc47 | 57 | |
| prithviganeshk | 8:7e3f92f0dc47 | 58 | //Setting the period and duty cycle for DC motors |
| jiteshg | 2:bf817b299c19 | 59 | pwm3.period_ms(20); |
| prithviganeshk | 8:7e3f92f0dc47 | 60 | pwm3.write(0); |
| jiteshg | 2:bf817b299c19 | 61 | |
| jiteshg | 2:bf817b299c19 | 62 | //Setting the period and duty cycle for Servo motors |
| jiteshg | 0:fd080fb55bae | 63 | pwm1.period_ms(20); |
| jiteshg | 2:bf817b299c19 | 64 | pwm2.period_ms(20); |
| jiteshg | 2:bf817b299c19 | 65 | pwm1.write(0); |
| jiteshg | 2:bf817b299c19 | 66 | pwm2.write(0); |
| jiteshg | 1:8c73948a0864 | 67 | |
| prithviganeshk | 8:7e3f92f0dc47 | 68 | Thread thread(read_button); |
| prithviganeshk | 8:7e3f92f0dc47 | 69 | |
| jiteshg | 1:8c73948a0864 | 70 | while(1){ |
| prithviganeshk | 8:7e3f92f0dc47 | 71 | |
| prithviganeshk | 8:7e3f92f0dc47 | 72 | // Take the first element if not empty |
| prithviganeshk | 8:7e3f92f0dc47 | 73 | if(press[0] > 0) |
| prithviganeshk | 8:7e3f92f0dc47 | 74 | val = press[0]; |
| prithviganeshk | 8:7e3f92f0dc47 | 75 | else |
| prithviganeshk | 8:7e3f92f0dc47 | 76 | continue; |
| prithviganeshk | 8:7e3f92f0dc47 | 77 | |
| prithviganeshk | 8:7e3f92f0dc47 | 78 | // Ignore if new pressed floor is same as current floor |
| prithviganeshk | 8:7e3f92f0dc47 | 79 | // Remove the first value and left shift |
| prithviganeshk | 8:7e3f92f0dc47 | 80 | if(val == currentState || val == 0){ |
| jiteshg | 2:bf817b299c19 | 81 | pwm3.write(0); |
| prithviganeshk | 8:7e3f92f0dc47 | 82 | press[0] = press[1]; |
| prithviganeshk | 8:7e3f92f0dc47 | 83 | press[1] = press[2]; |
| prithviganeshk | 8:7e3f92f0dc47 | 84 | press[2] = press[3]; |
| prithviganeshk | 8:7e3f92f0dc47 | 85 | press[3] = 0; |
| prithviganeshk | 8:7e3f92f0dc47 | 86 | continue; |
| jiteshg | 2:bf817b299c19 | 87 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 88 | |
| prithviganeshk | 8:7e3f92f0dc47 | 89 | |
| prithviganeshk | 8:7e3f92f0dc47 | 90 | |
| prithviganeshk | 8:7e3f92f0dc47 | 91 | dir = 1; |
| prithviganeshk | 8:7e3f92f0dc47 | 92 | flag_up = 1; |
| prithviganeshk | 8:7e3f92f0dc47 | 93 | |
| prithviganeshk | 8:7e3f92f0dc47 | 94 | while(dir == 1){ |
| prithviganeshk | 8:7e3f92f0dc47 | 95 | |
| prithviganeshk | 8:7e3f92f0dc47 | 96 | closeGate(); //Close gate |
| prithviganeshk | 8:7e3f92f0dc47 | 97 | printf("Moving up\n\n\n"); |
| prithviganeshk | 8:7e3f92f0dc47 | 98 | printf("Destination Floor: %d\n",val); |
| prithviganeshk | 8:7e3f92f0dc47 | 99 | printf("Current Floor: %d\n",currentState); |
| prithviganeshk | 8:7e3f92f0dc47 | 100 | |
| prithviganeshk | 8:7e3f92f0dc47 | 101 | dc1 = 0; |
| prithviganeshk | 8:7e3f92f0dc47 | 102 | dc2 = 1; |
| prithviganeshk | 8:7e3f92f0dc47 | 103 | pwm3.write(0.1); |
| prithviganeshk | 8:7e3f92f0dc47 | 104 | printf("Destination Floor Frequency value:%d\n",fvalues[val]); |
| prithviganeshk | 8:7e3f92f0dc47 | 105 | |
| prithviganeshk | 8:7e3f92f0dc47 | 106 | while(1){ |
| prithviganeshk | 8:7e3f92f0dc47 | 107 | if(((frequency > (fvalues[val] - 10)) && (frequency < (fvalues[val] + 10)))){ |
| prithviganeshk | 8:7e3f92f0dc47 | 108 | currentState = val; |
| prithviganeshk | 8:7e3f92f0dc47 | 109 | openGate(); |
| prithviganeshk | 8:7e3f92f0dc47 | 110 | break; |
| prithviganeshk | 8:7e3f92f0dc47 | 111 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 112 | //else{ |
| prithviganeshk | 8:7e3f92f0dc47 | 113 | // printf("current freq: %f\n",frequency); |
| prithviganeshk | 8:7e3f92f0dc47 | 114 | //} |
| prithviganeshk | 8:7e3f92f0dc47 | 115 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 116 | |
| prithviganeshk | 8:7e3f92f0dc47 | 117 | //Check for any key presses greater than current floor |
| prithviganeshk | 8:7e3f92f0dc47 | 118 | for(i=0; i<4 ;i++){ |
| prithviganeshk | 8:7e3f92f0dc47 | 119 | |
| prithviganeshk | 8:7e3f92f0dc47 | 120 | if(press[i]> 0 && press[i] > currentState ){ |
| prithviganeshk | 8:7e3f92f0dc47 | 121 | val = press[i]; |
| prithviganeshk | 8:7e3f92f0dc47 | 122 | press[i] = 0; |
| prithviganeshk | 8:7e3f92f0dc47 | 123 | flag_up = 1; |
| prithviganeshk | 8:7e3f92f0dc47 | 124 | break; |
| prithviganeshk | 8:7e3f92f0dc47 | 125 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 126 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 127 | |
| prithviganeshk | 8:7e3f92f0dc47 | 128 | if(flag_up == 0) |
| prithviganeshk | 8:7e3f92f0dc47 | 129 | break; |
| prithviganeshk | 8:7e3f92f0dc47 | 130 | |
| prithviganeshk | 8:7e3f92f0dc47 | 131 | } //end of while dir |
| prithviganeshk | 8:7e3f92f0dc47 | 132 | |
| prithviganeshk | 8:7e3f92f0dc47 | 133 | |
| prithviganeshk | 8:7e3f92f0dc47 | 134 | |
| prithviganeshk | 8:7e3f92f0dc47 | 135 | dir = 0; |
| prithviganeshk | 8:7e3f92f0dc47 | 136 | flag_down = 1; |
| prithviganeshk | 8:7e3f92f0dc47 | 137 | |
| prithviganeshk | 8:7e3f92f0dc47 | 138 | while(dir == 0){ |
| prithviganeshk | 8:7e3f92f0dc47 | 139 | |
| prithviganeshk | 8:7e3f92f0dc47 | 140 | closeGate(); //Close gate |
| prithviganeshk | 8:7e3f92f0dc47 | 141 | printf("Moving down\n\n\n"); |
| prithviganeshk | 8:7e3f92f0dc47 | 142 | printf("Destination Floor: %d\n",val); |
| prithviganeshk | 8:7e3f92f0dc47 | 143 | printf("Current Floor: %d\n",currentState); |
| prithviganeshk | 8:7e3f92f0dc47 | 144 | dc1 = 1; |
| prithviganeshk | 8:7e3f92f0dc47 | 145 | dc2 = 0; |
| prithviganeshk | 8:7e3f92f0dc47 | 146 | pwm3.write(0.1); |
| prithviganeshk | 8:7e3f92f0dc47 | 147 | printf("Destination Floor Frequency value:%d\n",fvalues[val]); |
| prithviganeshk | 8:7e3f92f0dc47 | 148 | |
| prithviganeshk | 8:7e3f92f0dc47 | 149 | while(1){ |
| prithviganeshk | 8:7e3f92f0dc47 | 150 | if(((frequency > (fvalues[val] - 10)) && (frequency < (fvalues[val] + 10)))){ |
| prithviganeshk | 8:7e3f92f0dc47 | 151 | currentState = val; |
| prithviganeshk | 8:7e3f92f0dc47 | 152 | openGate(); |
| prithviganeshk | 8:7e3f92f0dc47 | 153 | break; |
| prithviganeshk | 8:7e3f92f0dc47 | 154 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 155 | //else{ |
| prithviganeshk | 8:7e3f92f0dc47 | 156 | // printf("current freq: %f\n",frequency); |
| prithviganeshk | 8:7e3f92f0dc47 | 157 | //} |
| prithviganeshk | 8:7e3f92f0dc47 | 158 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 159 | |
| prithviganeshk | 8:7e3f92f0dc47 | 160 | //Check for any key presses lesser than current floor |
| prithviganeshk | 8:7e3f92f0dc47 | 161 | for(i=4; i>=0 ;i++){ |
| prithviganeshk | 8:7e3f92f0dc47 | 162 | |
| prithviganeshk | 8:7e3f92f0dc47 | 163 | if(press[i]> 0 && press[i] < currentState ){ |
| prithviganeshk | 8:7e3f92f0dc47 | 164 | val = press[i]; |
| prithviganeshk | 8:7e3f92f0dc47 | 165 | press[i] = 0; |
| prithviganeshk | 8:7e3f92f0dc47 | 166 | flag_down = 1; |
| prithviganeshk | 8:7e3f92f0dc47 | 167 | break; |
| prithviganeshk | 8:7e3f92f0dc47 | 168 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 169 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 170 | |
| prithviganeshk | 8:7e3f92f0dc47 | 171 | if(flag_down == 0) |
| prithviganeshk | 8:7e3f92f0dc47 | 172 | break; |
| prithviganeshk | 8:7e3f92f0dc47 | 173 | } //end of while dir |
| prithviganeshk | 8:7e3f92f0dc47 | 174 | |
| prithviganeshk | 8:7e3f92f0dc47 | 175 | }//end of outer while 1 |
| prithviganeshk | 8:7e3f92f0dc47 | 176 | |
| prithviganeshk | 8:7e3f92f0dc47 | 177 | } //end of main |
| prithviganeshk | 8:7e3f92f0dc47 | 178 | |
| prithviganeshk | 8:7e3f92f0dc47 | 179 | |
| prithviganeshk | 8:7e3f92f0dc47 | 180 | |
| prithviganeshk | 8:7e3f92f0dc47 | 181 | |
| prithviganeshk | 8:7e3f92f0dc47 | 182 | //Function to read the key pressed and store in array |
| prithviganeshk | 8:7e3f92f0dc47 | 183 | void read_button(void const *args) { |
| prithviganeshk | 8:7e3f92f0dc47 | 184 | |
| prithviganeshk | 8:7e3f92f0dc47 | 185 | int i,prev_val,val = 0; |
| prithviganeshk | 8:7e3f92f0dc47 | 186 | printf("Entered thread\n"); |
| prithviganeshk | 8:7e3f92f0dc47 | 187 | |
| prithviganeshk | 8:7e3f92f0dc47 | 188 | while (1) { |
| prithviganeshk | 8:7e3f92f0dc47 | 189 | |
| prithviganeshk | 8:7e3f92f0dc47 | 190 | if (press[3] == 0){ // Enter only if array is not full |
| prithviganeshk | 8:7e3f92f0dc47 | 191 | |
| prithviganeshk | 8:7e3f92f0dc47 | 192 | //float adc_val = button.read(); |
| prithviganeshk | 8:7e3f92f0dc47 | 193 | //int val = getState(adc_val); |
| prithviganeshk | 8:7e3f92f0dc47 | 194 | char c = pc.getc(); |
| prithviganeshk | 8:7e3f92f0dc47 | 195 | val = c - 48; |
| prithviganeshk | 8:7e3f92f0dc47 | 196 | printf("value entered : %d\n",val); |
| prithviganeshk | 8:7e3f92f0dc47 | 197 | |
| prithviganeshk | 8:7e3f92f0dc47 | 198 | if(val!= prev_val){ // If new floor is pressed |
| prithviganeshk | 8:7e3f92f0dc47 | 199 | |
| prithviganeshk | 8:7e3f92f0dc47 | 200 | prev_val = val; // Modify the previous value |
| prithviganeshk | 8:7e3f92f0dc47 | 201 | |
| prithviganeshk | 8:7e3f92f0dc47 | 202 | if(dir == 1){ // If lift is goin up - check if read value is less than current destination |
| prithviganeshk | 8:7e3f92f0dc47 | 203 | if((val < destinationState)){ // If the value is less than destination floor make the current value as destination |
| prithviganeshk | 8:7e3f92f0dc47 | 204 | addtoarray(destintionState); |
| prithviganeshk | 8:7e3f92f0dc47 | 205 | destintionState = val; |
| prithviganeshk | 8:7e3f92f0dc47 | 206 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 207 | else{ //if the value is greater than the destination, add it to the list |
| prithviganeshk | 8:7e3f92f0dc47 | 208 | addtoarray(val); |
| prithviganeshk | 8:7e3f92f0dc47 | 209 | } |
| jiteshg | 4:acb62dee5ba9 | 210 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 211 | |
| prithviganeshk | 8:7e3f92f0dc47 | 212 | else if(dir == 0){ // If the lift is going down - check if read value is greater than current destination |
| prithviganeshk | 8:7e3f92f0dc47 | 213 | if((val > destinationState)){ // If the value is less than destination floor make the current value as destination |
| prithviganeshk | 8:7e3f92f0dc47 | 214 | addtoarray(destintionState); |
| prithviganeshk | 8:7e3f92f0dc47 | 215 | destintionState = val; |
| prithviganeshk | 8:7e3f92f0dc47 | 216 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 217 | else{ //if the value is lesser than the destination, add it to the list |
| prithviganeshk | 8:7e3f92f0dc47 | 218 | addtoarray(val); |
| prithviganeshk | 8:7e3f92f0dc47 | 219 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 220 | } |
| jiteshg | 4:acb62dee5ba9 | 221 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 222 | } |
| jiteshg | 1:8c73948a0864 | 223 | } |
| jiteshg | 2:bf817b299c19 | 224 | } |
| jiteshg | 2:bf817b299c19 | 225 | |
| prithviganeshk | 8:7e3f92f0dc47 | 226 | |
| prithviganeshk | 8:7e3f92f0dc47 | 227 | |
| prithviganeshk | 8:7e3f92f0dc47 | 228 | //Funtion to remove first element in the array |
| prithviganeshk | 8:7e3f92f0dc47 | 229 | void removefirst(){ |
| prithviganeshk | 8:7e3f92f0dc47 | 230 | press[0] = 0; |
| prithviganeshk | 8:7e3f92f0dc47 | 231 | press[1] = press[2]; |
| prithviganeshk | 8:7e3f92f0dc47 | 232 | press[2] = press[3]; |
| prithviganeshk | 8:7e3f92f0dc47 | 233 | press[3] = press[4]; |
| prithviganeshk | 8:7e3f92f0dc47 | 234 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 235 | |
| prithviganeshk | 8:7e3f92f0dc47 | 236 | //Function to add to array at the back |
| prithviganeshk | 8:7e3f92f0dc47 | 237 | void addtoarray(int val){ |
| prithviganeshk | 8:7e3f92f0dc47 | 238 | |
| prithviganeshk | 8:7e3f92f0dc47 | 239 | int i; |
| prithviganeshk | 8:7e3f92f0dc47 | 240 | |
| prithviganeshk | 8:7e3f92f0dc47 | 241 | if(press[3] == 0){ //insert only if array is not full |
| prithviganeshk | 8:7e3f92f0dc47 | 242 | |
| prithviganeshk | 8:7e3f92f0dc47 | 243 | for(i=0;i<4;i++){ |
| prithviganeshk | 8:7e3f92f0dc47 | 244 | if(press[i] != 0){ |
| prithviganeshk | 8:7e3f92f0dc47 | 245 | press[i] = val; |
| prithviganeshk | 8:7e3f92f0dc47 | 246 | break; |
| prithviganeshk | 8:7e3f92f0dc47 | 247 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 248 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 249 | ] |
| prithviganeshk | 8:7e3f92f0dc47 | 250 | else |
| prithviganeshk | 8:7e3f92f0dc47 | 251 | printf("The array is full\n"); |
| prithviganeshk | 8:7e3f92f0dc47 | 252 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 253 | |
| prithviganeshk | 8:7e3f92f0dc47 | 254 | // Function to open gates |
| jiteshg | 2:bf817b299c19 | 255 | void openGate(){ |
| jiteshg | 2:bf817b299c19 | 256 | pwm1.write(0.0375); // 3.75% duty cycle - Open the gate |
| prithviganeshk | 6:625384a34dd5 | 257 | pwm2.write(0.1125); |
| prithviganeshk | 6:625384a34dd5 | 258 | wait(2); |
| jiteshg | 2:bf817b299c19 | 259 | pwm1.write(0); // Stop |
| prithviganeshk | 6:625384a34dd5 | 260 | pwm2.write(0); |
| jiteshg | 0:fd080fb55bae | 261 | } |
| jiteshg | 2:bf817b299c19 | 262 | |
| prithviganeshk | 8:7e3f92f0dc47 | 263 | // Function to close gates |
| jiteshg | 2:bf817b299c19 | 264 | void closeGate(){ |
| jiteshg | 2:bf817b299c19 | 265 | pwm1.write(0.1125); // 11.25% duty cycle - Close the gate |
| prithviganeshk | 6:625384a34dd5 | 266 | pwm2.write(0.0375); |
| prithviganeshk | 6:625384a34dd5 | 267 | wait(2); |
| jiteshg | 2:bf817b299c19 | 268 | pwm1.write(0); // Stop |
| prithviganeshk | 6:625384a34dd5 | 269 | pwm2.write(0); |
| jiteshg | 3:66a52943c525 | 270 | } |
| jiteshg | 3:66a52943c525 | 271 | |
| prithviganeshk | 8:7e3f92f0dc47 | 272 | // Funciton to get floor based on keypress voltage |
| jiteshg | 3:66a52943c525 | 273 | int getState(float adc_val){ |
| prithviganeshk | 8:7e3f92f0dc47 | 274 | int state; |
| prithviganeshk | 8:7e3f92f0dc47 | 275 | |
| jiteshg | 3:66a52943c525 | 276 | if(adc_val > 0.15 && adc_val < 0.25){ |
| prithviganeshk | 7:3bed3e005200 | 277 | state = 2; |
| prithviganeshk | 8:7e3f92f0dc47 | 278 | printf("Button Press : %d\n",state); |
| jiteshg | 3:66a52943c525 | 279 | } |
| jiteshg | 3:66a52943c525 | 280 | else if(adc_val > 0.35 && adc_val < 0.45){ |
| prithviganeshk | 7:3bed3e005200 | 281 | state = 1; |
| prithviganeshk | 8:7e3f92f0dc47 | 282 | printf("Button Press : %d\n",state); |
| jiteshg | 3:66a52943c525 | 283 | } |
| jiteshg | 3:66a52943c525 | 284 | else if(adc_val > 0.55 && adc_val < 0.65){ |
| jiteshg | 3:66a52943c525 | 285 | state = 3; |
| prithviganeshk | 8:7e3f92f0dc47 | 286 | printf("Button Press : %d\n",state); |
| jiteshg | 3:66a52943c525 | 287 | } |
| jiteshg | 3:66a52943c525 | 288 | else if(adc_val > 0.75 && adc_val < 0.85){ |
| jiteshg | 3:66a52943c525 | 289 | state = 4; |
| prithviganeshk | 8:7e3f92f0dc47 | 290 | printf("Button Press : %d\n",state); |
| jiteshg | 3:66a52943c525 | 291 | } |
| jiteshg | 3:66a52943c525 | 292 | else if(adc_val > 0.95 && adc_val < 1.05){ |
| jiteshg | 3:66a52943c525 | 293 | state = 5; |
| prithviganeshk | 8:7e3f92f0dc47 | 294 | printf("Button Press : %d\n",state); |
| jiteshg | 3:66a52943c525 | 295 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 296 | |
| jiteshg | 3:66a52943c525 | 297 | return state; |
| jiteshg | 4:acb62dee5ba9 | 298 | } |
| jiteshg | 4:acb62dee5ba9 | 299 | |
| prithviganeshk | 8:7e3f92f0dc47 | 300 | |
| prithviganeshk | 8:7e3f92f0dc47 | 301 | // Function to check for rising edge |
| jiteshg | 4:acb62dee5ba9 | 302 | void rising(){ |
| jiteshg | 4:acb62dee5ba9 | 303 | begin = timer.read_us(); |
| jiteshg | 4:acb62dee5ba9 | 304 | flag = true; |
| jiteshg | 4:acb62dee5ba9 | 305 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 306 | |
| prithviganeshk | 8:7e3f92f0dc47 | 307 | |
| prithviganeshk | 8:7e3f92f0dc47 | 308 | // Function to check for falling edge |
| jiteshg | 4:acb62dee5ba9 | 309 | void falling(){ |
| jiteshg | 4:acb62dee5ba9 | 310 | if(flag == true){ |
| jiteshg | 4:acb62dee5ba9 | 311 | end = timer.read_us(); |
| jiteshg | 4:acb62dee5ba9 | 312 | frequency = 500000/(end-begin); |
| jiteshg | 4:acb62dee5ba9 | 313 | begin = 0; |
| jiteshg | 4:acb62dee5ba9 | 314 | end = 0; |
| jiteshg | 4:acb62dee5ba9 | 315 | flag = false; |
| jiteshg | 4:acb62dee5ba9 | 316 | } |
| prithviganeshk | 6:625384a34dd5 | 317 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 318 | |
| prithviganeshk | 8:7e3f92f0dc47 | 319 | |
| prithviganeshk | 8:7e3f92f0dc47 | 320 | |
| prithviganeshk | 8:7e3f92f0dc47 | 321 | //Extra Stuff |
| prithviganeshk | 8:7e3f92f0dc47 | 322 | |
| prithviganeshk | 8:7e3f92f0dc47 | 323 | |
| prithviganeshk | 8:7e3f92f0dc47 | 324 | /* |
| prithviganeshk | 8:7e3f92f0dc47 | 325 | //Sorting the array |
| prithviganeshk | 8:7e3f92f0dc47 | 326 | printf("sorting array\n"); |
| prithviganeshk | 8:7e3f92f0dc47 | 327 | for (a = 0; a < 4; a++){ |
| prithviganeshk | 8:7e3f92f0dc47 | 328 | for (b = a + 1; b < 4; b++){ |
| prithviganeshk | 8:7e3f92f0dc47 | 329 | if (press[a] > 0 && press[b] > 0 && press[a] > press[b]){ |
| prithviganeshk | 8:7e3f92f0dc47 | 330 | temp = press[a]; |
| prithviganeshk | 8:7e3f92f0dc47 | 331 | press[a] = press[b]; |
| prithviganeshk | 8:7e3f92f0dc47 | 332 | press[b] = temp; |
| prithviganeshk | 8:7e3f92f0dc47 | 333 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 334 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 335 | } |
| prithviganeshk | 8:7e3f92f0dc47 | 336 | */ |
| prithviganeshk | 8:7e3f92f0dc47 | 337 | |
| prithviganeshk | 8:7e3f92f0dc47 | 338 | |
| prithviganeshk | 8:7e3f92f0dc47 | 339 | /* |
| prithviganeshk | 8:7e3f92f0dc47 | 340 | //if(press[3] > 0){ |
| prithviganeshk | 8:7e3f92f0dc47 | 341 | //printf("Queue size exceeded\n"); |
| prithviganeshk | 8:7e3f92f0dc47 | 342 | //} |
| prithviganeshk | 8:7e3f92f0dc47 | 343 | */ |