![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
ese519
main.cpp@5:8e2b7caedd1d, 2015-10-15 (annotated)
- Committer:
- mfrede
- Date:
- Thu Oct 15 05:30:53 2015 +0000
- Revision:
- 5:8e2b7caedd1d
- Parent:
- 4:a5a7611a8d25
- Child:
- 6:652229327102
with timer counter and no stopping....
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 | |
mfrede | 5:8e2b7caedd1d | 4 | Timer freq; |
mfrede | 5:8e2b7caedd1d | 5 | unsigned int edge1=0; |
mfrede | 3:4f15d12f0ac0 | 6 | unsigned short floorat = 0; |
mfrede | 5:8e2b7caedd1d | 7 | unsigned short edge = 2; |
suneet | 2:27a9092dcc6c | 8 | bool onFloor = false; |
mfrede | 1:c37400704a2f | 9 | PwmOut servo1(p22); |
mfrede | 1:c37400704a2f | 10 | PwmOut servo2(p23); |
mfrede | 1:c37400704a2f | 11 | Serial pc(USBTX, USBRX); // tx, rx |
suneet | 2:27a9092dcc6c | 12 | PwmOut DCenable(p21); |
ashrekhi | 0:3009a71333b6 | 13 | |
mfrede | 5:8e2b7caedd1d | 14 | void edgecnter() { |
mfrede | 5:8e2b7caedd1d | 15 | edge--; |
mfrede | 5:8e2b7caedd1d | 16 | if(edge > 0) |
mfrede | 5:8e2b7caedd1d | 17 | freq.start(); |
mfrede | 5:8e2b7caedd1d | 18 | else { |
mfrede | 5:8e2b7caedd1d | 19 | int diff = freq.read_us(); |
mfrede | 5:8e2b7caedd1d | 20 | // pc.printf("edgediff: %d\r\n",diff); |
ashrekhi | 0:3009a71333b6 | 21 | |
mfrede | 5:8e2b7caedd1d | 22 | if(diff < 10050 && diff> 9900) |
mfrede | 5:8e2b7caedd1d | 23 | floorat = 1; |
mfrede | 5:8e2b7caedd1d | 24 | else if (diff < 4050 && diff > 3950) |
mfrede | 5:8e2b7caedd1d | 25 | floorat = 2; |
mfrede | 5:8e2b7caedd1d | 26 | else if (diff < 2050 && diff > 1950) |
mfrede | 5:8e2b7caedd1d | 27 | floorat = 3; |
mfrede | 5:8e2b7caedd1d | 28 | else if (diff < 1500 && diff > 1300) |
mfrede | 5:8e2b7caedd1d | 29 | floorat = 4; |
mfrede | 5:8e2b7caedd1d | 30 | else if (diff < 1100 && diff > 900) |
mfrede | 5:8e2b7caedd1d | 31 | floorat = 5; |
mfrede | 5:8e2b7caedd1d | 32 | edge = 2; |
mfrede | 5:8e2b7caedd1d | 33 | // if(floorat==0) |
mfrede | 5:8e2b7caedd1d | 34 | // pc.printf("edgediff: %d\r\n",diff); |
mfrede | 5:8e2b7caedd1d | 35 | freq.reset(); |
mfrede | 3:4f15d12f0ac0 | 36 | } |
mfrede | 5:8e2b7caedd1d | 37 | } |
ashrekhi | 0:3009a71333b6 | 38 | |
mfrede | 1:c37400704a2f | 39 | void open_door() |
mfrede | 1:c37400704a2f | 40 | { |
mfrede | 1:c37400704a2f | 41 | servo1 = 0.03f; // right |
mfrede | 1:c37400704a2f | 42 | servo2 = 0.10f; // left |
mfrede | 1:c37400704a2f | 43 | wait(1); |
mfrede | 1:c37400704a2f | 44 | } |
mfrede | 1:c37400704a2f | 45 | |
mfrede | 1:c37400704a2f | 46 | void close_door() |
mfrede | 1:c37400704a2f | 47 | { |
mfrede | 1:c37400704a2f | 48 | servo1 = 0.08f; //right |
mfrede | 1:c37400704a2f | 49 | servo2 = 0.05f; //left |
mfrede | 1:c37400704a2f | 50 | wait(1); |
mfrede | 1:c37400704a2f | 51 | } |
mfrede | 3:4f15d12f0ac0 | 52 | |
mfrede | 3:4f15d12f0ac0 | 53 | short get_requested(float voltage){ |
mfrede | 5:8e2b7caedd1d | 54 | if(voltage < 0.3f) |
mfrede | 3:4f15d12f0ac0 | 55 | return 1; |
mfrede | 5:8e2b7caedd1d | 56 | else if (voltage < 0.5f) |
mfrede | 3:4f15d12f0ac0 | 57 | return 2; |
mfrede | 5:8e2b7caedd1d | 58 | else if (voltage < 0.7f) |
mfrede | 3:4f15d12f0ac0 | 59 | return 3; |
mfrede | 5:8e2b7caedd1d | 60 | else if (voltage < 0.7f) |
mfrede | 3:4f15d12f0ac0 | 61 | return 4; |
mfrede | 3:4f15d12f0ac0 | 62 | else |
mfrede | 3:4f15d12f0ac0 | 63 | return 5; |
mfrede | 3:4f15d12f0ac0 | 64 | } |
ashrekhi | 0:3009a71333b6 | 65 | |
ashrekhi | 0:3009a71333b6 | 66 | int main() { |
mfrede | 1:c37400704a2f | 67 | |
mfrede | 1:c37400704a2f | 68 | |
ashrekhi | 0:3009a71333b6 | 69 | InterruptIn floor(p17); |
ashrekhi | 0:3009a71333b6 | 70 | AnalogIn request(p18); |
ashrekhi | 0:3009a71333b6 | 71 | servo1.period(0.020f); //set 20ms period |
ashrekhi | 0:3009a71333b6 | 72 | servo2.period(0.020f); //set 20ms period |
mfrede | 1:c37400704a2f | 73 | DigitalOut motor1(p19); |
mfrede | 1:c37400704a2f | 74 | DigitalOut motor2(p20); |
mfrede | 3:4f15d12f0ac0 | 75 | //int floorat; |
suneet | 2:27a9092dcc6c | 76 | DCenable.period(0.0002f); |
ashrekhi | 0:3009a71333b6 | 77 | |
mfrede | 1:c37400704a2f | 78 | |
mfrede | 5:8e2b7caedd1d | 79 | floor.rise(&edgecnter); |
mfrede | 1:c37400704a2f | 80 | |
mfrede | 5:8e2b7caedd1d | 81 | |
mfrede | 5:8e2b7caedd1d | 82 | close_door(); |
mfrede | 5:8e2b7caedd1d | 83 | //pc.print |
mfrede | 5:8e2b7caedd1d | 84 | //go up until you find a floor |
mfrede | 5:8e2b7caedd1d | 85 | motor1 = 0; |
mfrede | 5:8e2b7caedd1d | 86 | motor2 = 1; |
mfrede | 5:8e2b7caedd1d | 87 | DCenable = 0.8f; |
mfrede | 5:8e2b7caedd1d | 88 | |
mfrede | 5:8e2b7caedd1d | 89 | while(floorat==0); |
mfrede | 5:8e2b7caedd1d | 90 | |
mfrede | 5:8e2b7caedd1d | 91 | short current_floor = floorat; |
mfrede | 5:8e2b7caedd1d | 92 | pc.printf("at floor: %d\r\n",current_floor); |
mfrede | 3:4f15d12f0ac0 | 93 | pc.printf("go to floor: %d\r\n",get_requested(request)); |
mfrede | 3:4f15d12f0ac0 | 94 | while(1) { |
mfrede | 5:8e2b7caedd1d | 95 | while(get_requested(request) != floorat) { |
mfrede | 5:8e2b7caedd1d | 96 | pc.printf("at floor: %d\r\n",current_floor); |
mfrede | 5:8e2b7caedd1d | 97 | pc.printf("go to floor: %d\r\n",get_requested(request)); |
mfrede | 5:8e2b7caedd1d | 98 | if(get_requested(request) > current_floor) { |
mfrede | 5:8e2b7caedd1d | 99 | pc.printf("go up\r\n"); |
mfrede | 5:8e2b7caedd1d | 100 | motor1 = 0; |
mfrede | 5:8e2b7caedd1d | 101 | motor2 = 1; |
mfrede | 5:8e2b7caedd1d | 102 | DCenable = 0.8f; |
mfrede | 5:8e2b7caedd1d | 103 | } else if(get_requested(request) < current_floor) { |
mfrede | 5:8e2b7caedd1d | 104 | pc.printf("go down\r\n"); |
mfrede | 5:8e2b7caedd1d | 105 | motor1 = 1; |
mfrede | 5:8e2b7caedd1d | 106 | motor2 = 0; |
mfrede | 5:8e2b7caedd1d | 107 | DCenable = 0.8f; |
mfrede | 5:8e2b7caedd1d | 108 | } else { |
mfrede | 5:8e2b7caedd1d | 109 | motor1=0; |
mfrede | 5:8e2b7caedd1d | 110 | motor2=0; |
mfrede | 5:8e2b7caedd1d | 111 | DCenable = 0; |
mfrede | 5:8e2b7caedd1d | 112 | |
mfrede | 5:8e2b7caedd1d | 113 | } |
mfrede | 3:4f15d12f0ac0 | 114 | } |
mfrede | 5:8e2b7caedd1d | 115 | pc.printf("at requested floor\r\n"); |
mfrede | 5:8e2b7caedd1d | 116 | open_door(); |
mfrede | 5:8e2b7caedd1d | 117 | wait(5); |
mfrede | 5:8e2b7caedd1d | 118 | close_door(); |
mfrede | 5:8e2b7caedd1d | 119 | while(get_requested(request) == floorat); |
mfrede | 5:8e2b7caedd1d | 120 | |
mfrede | 3:4f15d12f0ac0 | 121 | } |
mfrede | 3:4f15d12f0ac0 | 122 | |
suneet | 2:27a9092dcc6c | 123 | |
ashrekhi | 0:3009a71333b6 | 124 | |
ashrekhi | 0:3009a71333b6 | 125 | |
ashrekhi | 0:3009a71333b6 | 126 | return 0; |
ashrekhi | 0:3009a71333b6 | 127 | } |