![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
ese519
main.cpp
- Committer:
- ashrekhi
- Date:
- 2015-10-01
- Revision:
- 0:3009a71333b6
- Child:
- 1:c37400704a2f
File content as of revision 0:3009a71333b6:
#include "mbed.h" #include "PwmOut.h" unsigned long freqcnt=0; int floorat = 1; #define OPENL 0.00375f #define OPENR 0.1125f void freq_counter() { freqcnt++; } void timerfunc() { if (freqcnt != 0) { if (freqcnt <= 1) 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 int main() { PwmOut DCenable(p21); PwmOut servo1(p22); PwmOut servo2(p23); InterruptIn floor(p17); AnalogIn request(p18); servo1.period(0.020f); //set 20ms period servo2.period(0.020f); //set 20ms period DigitalOut motor1(p20); DigitalOut motor2(p19); AnalogIn floor2(p17); Timeout check_floor; check_floor.attach(&timerfunc,0.01f); floor.rise(&freq_counter); while(1){ if(request <= 0.66f) { //first floor if(floorat > 1) { //if we're above the first floor //set DC motor to go down motor1 = 1; motor2 = 0; DCenable = 0.5f; } } else if (request <= 1.32f) { // second floor if (floorat > 2) { //set DC motor to go down motor1 = 1; motor2 = 0; DCenable = 0.5f; } else if (floorat < 2) { //set DC motor to go up motor1 = 0; motor2 = 1; DCenable = 0.5f; } } else if (request <= 1.98f) { // third floor if (floorat > 3) { //set DC motor to go down motor1 = 1; motor2 = 0; DCenable = 0.5f; } else if (floorat < 3) { //set DC motor to go up motor1 = 0; motor2 = 1; DCenable = 0.5f; } } else if (request <= 2.64f) { // fourth floor if (floorat > 4) { //set DC motor to go down motor1 = 1; motor2 = 0; DCenable = 0.5f; } else if (floorat < 4) { //set DC motor to go up motor1 = 0; motor2 = 1; DCenable = 0.5f; } } else { //fifth floor if (floorat < 5) { //set DC motor to go up motor1 = 0; motor2 = 1; DCenable = 0.5f; } } //end floor checks while (floorat == 0) { //wait endlessly until we're on a floor } } return 0; }