![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
ese519
main.cpp
- Committer:
- mfrede
- Date:
- 2015-10-07
- Revision:
- 1:c37400704a2f
- Parent:
- 0:3009a71333b6
- Child:
- 2:27a9092dcc6c
File content as of revision 1:c37400704a2f:
#include "mbed.h" #include "PwmOut.h" unsigned int freqcnt=0; unsigned int floorat = 1; PwmOut servo1(p22); PwmOut servo2(p23); Serial pc(USBTX, USBRX); // tx, rx DigitalOut DCenable(p21); void freq_counter() { freqcnt++; DCenable = 0; pc.printf("%d cnt\r\n",freqcnt); } void timerfunc() { // what it does floorat = 0; if (freqcnt != 0) { if (freqcnt <= 1 && freqcnt>0) floorat = 1; else if (freqcnt <= 3) floorat = 2; else if (freqcnt <= 5) floorat = 3; else if (freqcnt <= 7) floorat = 4; else if (freqcnt <= 10) floorat = 5; } freqcnt = 0; } void open_door() { servo1 = 0.03f; // right servo2 = 0.10f; // left wait(1); } void close_door() { servo1 = 0.08f; //right servo2 = 0.05f; //left wait(1); } int main() { InterruptIn floor(p17); AnalogIn request(p18); servo1.period(0.020f); //set 20ms period servo2.period(0.020f); //set 20ms period DigitalOut motor1(p19); DigitalOut motor2(p20); AnalogIn floor2(p17); Ticker check_floor; //? check_floor.attach(&timerfunc,0.01f); floor.fall(&freq_counter); close_door(); while(1){ pc.printf("%d floor\n\r",floorat); pc.printf("%f requested\n\r",request.read()); if(DCenable == 0 && floorat == 0) { //if we are not starting on a known floor motor1 = 1; //just go up until you get to a floor motor2 = 0; DCenable = 1; pc.printf("go up to start \r\n"); } if(request <= 0.2f) { //first floor pc.printf("go to the first floor\r\n"); if(floorat > 1) { //if we're above the first floor //set DC motor to go down motor1 = 1; motor2 = 0; DCenable = 1; } else if (floorat == 1) { DCenable = 0; open_door(); wait(10); close_door(); } } else if (request <= 0.4f) { // second floor pc.printf("go to the second floor\r\n"); if (floorat > 2) { //set DC motor to go down motor1 = 1; motor2 = 0; DCenable = 1; } else if (floorat < 2) { //set DC motor to go up motor1 = 0; motor2 = 1; DCenable = 1; } else { DCenable = 0; open_door(); wait(10); close_door(); } } else if (request*5 <= 0.6f) { // third floor pc.printf("go to the third floor\r\n"); if (floorat > 3) { //set DC motor to go down motor1 = 1; motor2 = 0; DCenable = 1; } else if (floorat < 3) { //set DC motor to go up motor1 = 0; motor2 = 1; DCenable = 1; } else { DCenable = 0; open_door(); wait(10); close_door(); } } else if (request <= 0.8f) { // fourth floor pc.printf("go to the fourth floor\r\n"); if (floorat > 4) { //set DC motor to go down motor1 = 1; motor2 = 0; DCenable = 1; } else if (floorat < 4) { //set DC motor to go up motor1 = 0; motor2 = 1; DCenable = 1; } else { DCenable = 0; open_door(); wait(10); close_door(); } } else { //fifth floor pc.printf("go to the fifth floor\r\n"); if (floorat < 5) { //set DC motor to go up motor1 = 0; motor2 = 1; DCenable = 1; } else { DCenable = 0; open_door(); wait(10); close_door(); } } //end floor checks wait(10); } //while (floorat == 0) { //wait endlessly until we're on a floor // if(DCenable == 0 || freqcnt != 0) // break; // wait(1); // } while(1) { } return 0; }