Ashmeet Singh Rekhi
/
mbed_elevator
ese519
main.cpp@0:3009a71333b6, 2015-10-01 (annotated)
- Committer:
- ashrekhi
- Date:
- Thu Oct 01 23:45:11 2015 +0000
- Revision:
- 0:3009a71333b6
- Child:
- 1:c37400704a2f
initial code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ashrekhi | 0:3009a71333b6 | 1 | #include "mbed.h" |
ashrekhi | 0:3009a71333b6 | 2 | #include "PwmOut.h" |
ashrekhi | 0:3009a71333b6 | 3 | |
ashrekhi | 0:3009a71333b6 | 4 | unsigned long freqcnt=0; |
ashrekhi | 0:3009a71333b6 | 5 | int floorat = 1; |
ashrekhi | 0:3009a71333b6 | 6 | |
ashrekhi | 0:3009a71333b6 | 7 | #define OPENL 0.00375f |
ashrekhi | 0:3009a71333b6 | 8 | #define OPENR 0.1125f |
ashrekhi | 0:3009a71333b6 | 9 | |
ashrekhi | 0:3009a71333b6 | 10 | void freq_counter() { |
ashrekhi | 0:3009a71333b6 | 11 | freqcnt++; |
ashrekhi | 0:3009a71333b6 | 12 | } |
ashrekhi | 0:3009a71333b6 | 13 | |
ashrekhi | 0:3009a71333b6 | 14 | void timerfunc() { |
ashrekhi | 0:3009a71333b6 | 15 | if (freqcnt != 0) { |
ashrekhi | 0:3009a71333b6 | 16 | if (freqcnt <= 1) |
ashrekhi | 0:3009a71333b6 | 17 | floorat = 1; |
ashrekhi | 0:3009a71333b6 | 18 | else if (freqcnt <= 3) |
ashrekhi | 0:3009a71333b6 | 19 | floorat = 2; |
ashrekhi | 0:3009a71333b6 | 20 | else if (freqcnt <= 5) |
ashrekhi | 0:3009a71333b6 | 21 | floorat = 3; |
ashrekhi | 0:3009a71333b6 | 22 | else if (freqcnt <= 7) |
ashrekhi | 0:3009a71333b6 | 23 | floorat = 4; |
ashrekhi | 0:3009a71333b6 | 24 | else if (freqcnt <= 10) |
ashrekhi | 0:3009a71333b6 | 25 | floorat = 5; |
ashrekhi | 0:3009a71333b6 | 26 | } |
ashrekhi | 0:3009a71333b6 | 27 | freqcnt = 0; |
ashrekhi | 0:3009a71333b6 | 28 | } |
ashrekhi | 0:3009a71333b6 | 29 | |
ashrekhi | 0:3009a71333b6 | 30 | void |
ashrekhi | 0:3009a71333b6 | 31 | |
ashrekhi | 0:3009a71333b6 | 32 | int main() { |
ashrekhi | 0:3009a71333b6 | 33 | PwmOut DCenable(p21); |
ashrekhi | 0:3009a71333b6 | 34 | PwmOut servo1(p22); |
ashrekhi | 0:3009a71333b6 | 35 | PwmOut servo2(p23); |
ashrekhi | 0:3009a71333b6 | 36 | InterruptIn floor(p17); |
ashrekhi | 0:3009a71333b6 | 37 | AnalogIn request(p18); |
ashrekhi | 0:3009a71333b6 | 38 | servo1.period(0.020f); //set 20ms period |
ashrekhi | 0:3009a71333b6 | 39 | servo2.period(0.020f); //set 20ms period |
ashrekhi | 0:3009a71333b6 | 40 | DigitalOut motor1(p20); |
ashrekhi | 0:3009a71333b6 | 41 | DigitalOut motor2(p19); |
ashrekhi | 0:3009a71333b6 | 42 | AnalogIn floor2(p17); |
ashrekhi | 0:3009a71333b6 | 43 | |
ashrekhi | 0:3009a71333b6 | 44 | Timeout check_floor; |
ashrekhi | 0:3009a71333b6 | 45 | check_floor.attach(&timerfunc,0.01f); |
ashrekhi | 0:3009a71333b6 | 46 | floor.rise(&freq_counter); |
ashrekhi | 0:3009a71333b6 | 47 | |
ashrekhi | 0:3009a71333b6 | 48 | while(1){ |
ashrekhi | 0:3009a71333b6 | 49 | if(request <= 0.66f) { //first floor |
ashrekhi | 0:3009a71333b6 | 50 | if(floorat > 1) { //if we're above the first floor |
ashrekhi | 0:3009a71333b6 | 51 | //set DC motor to go down |
ashrekhi | 0:3009a71333b6 | 52 | motor1 = 1; |
ashrekhi | 0:3009a71333b6 | 53 | motor2 = 0; |
ashrekhi | 0:3009a71333b6 | 54 | DCenable = 0.5f; |
ashrekhi | 0:3009a71333b6 | 55 | } |
ashrekhi | 0:3009a71333b6 | 56 | } else if (request <= 1.32f) { // second floor |
ashrekhi | 0:3009a71333b6 | 57 | if (floorat > 2) { |
ashrekhi | 0:3009a71333b6 | 58 | //set DC motor to go down |
ashrekhi | 0:3009a71333b6 | 59 | motor1 = 1; |
ashrekhi | 0:3009a71333b6 | 60 | motor2 = 0; |
ashrekhi | 0:3009a71333b6 | 61 | DCenable = 0.5f; |
ashrekhi | 0:3009a71333b6 | 62 | } else if (floorat < 2) { |
ashrekhi | 0:3009a71333b6 | 63 | //set DC motor to go up |
ashrekhi | 0:3009a71333b6 | 64 | motor1 = 0; |
ashrekhi | 0:3009a71333b6 | 65 | motor2 = 1; |
ashrekhi | 0:3009a71333b6 | 66 | DCenable = 0.5f; |
ashrekhi | 0:3009a71333b6 | 67 | } |
ashrekhi | 0:3009a71333b6 | 68 | } else if (request <= 1.98f) { // third floor |
ashrekhi | 0:3009a71333b6 | 69 | if (floorat > 3) { |
ashrekhi | 0:3009a71333b6 | 70 | //set DC motor to go down |
ashrekhi | 0:3009a71333b6 | 71 | motor1 = 1; |
ashrekhi | 0:3009a71333b6 | 72 | motor2 = 0; |
ashrekhi | 0:3009a71333b6 | 73 | DCenable = 0.5f; |
ashrekhi | 0:3009a71333b6 | 74 | } else if (floorat < 3) { |
ashrekhi | 0:3009a71333b6 | 75 | //set DC motor to go up |
ashrekhi | 0:3009a71333b6 | 76 | motor1 = 0; |
ashrekhi | 0:3009a71333b6 | 77 | motor2 = 1; |
ashrekhi | 0:3009a71333b6 | 78 | DCenable = 0.5f; |
ashrekhi | 0:3009a71333b6 | 79 | } |
ashrekhi | 0:3009a71333b6 | 80 | } else if (request <= 2.64f) { // fourth floor |
ashrekhi | 0:3009a71333b6 | 81 | if (floorat > 4) { |
ashrekhi | 0:3009a71333b6 | 82 | //set DC motor to go down |
ashrekhi | 0:3009a71333b6 | 83 | motor1 = 1; |
ashrekhi | 0:3009a71333b6 | 84 | motor2 = 0; |
ashrekhi | 0:3009a71333b6 | 85 | DCenable = 0.5f; |
ashrekhi | 0:3009a71333b6 | 86 | } else if (floorat < 4) { |
ashrekhi | 0:3009a71333b6 | 87 | //set DC motor to go up |
ashrekhi | 0:3009a71333b6 | 88 | motor1 = 0; |
ashrekhi | 0:3009a71333b6 | 89 | motor2 = 1; |
ashrekhi | 0:3009a71333b6 | 90 | DCenable = 0.5f; |
ashrekhi | 0:3009a71333b6 | 91 | } |
ashrekhi | 0:3009a71333b6 | 92 | } else { //fifth floor |
ashrekhi | 0:3009a71333b6 | 93 | if (floorat < 5) { |
ashrekhi | 0:3009a71333b6 | 94 | //set DC motor to go up |
ashrekhi | 0:3009a71333b6 | 95 | motor1 = 0; |
ashrekhi | 0:3009a71333b6 | 96 | motor2 = 1; |
ashrekhi | 0:3009a71333b6 | 97 | DCenable = 0.5f; |
ashrekhi | 0:3009a71333b6 | 98 | } |
ashrekhi | 0:3009a71333b6 | 99 | } //end floor checks |
ashrekhi | 0:3009a71333b6 | 100 | while (floorat == 0) { //wait endlessly until we're on a floor |
ashrekhi | 0:3009a71333b6 | 101 | } |
ashrekhi | 0:3009a71333b6 | 102 | |
ashrekhi | 0:3009a71333b6 | 103 | |
ashrekhi | 0:3009a71333b6 | 104 | |
ashrekhi | 0:3009a71333b6 | 105 | } |
ashrekhi | 0:3009a71333b6 | 106 | |
ashrekhi | 0:3009a71333b6 | 107 | |
ashrekhi | 0:3009a71333b6 | 108 | return 0; |
ashrekhi | 0:3009a71333b6 | 109 | } |