ese519

Dependencies:   Servo mbed

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?

UserRevisionLine numberNew 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 }