Prueba ascensor Tiempo Real

Dependencies:   DebouncedIn Door Elevator HCSR04 mbed-os mbed

main.cpp

Committer:
Hedizxom
Date:
2018-06-07
Revision:
0:aa20c789c4c0

File content as of revision 0:aa20c789c4c0:


#include "mbed.h"
#include "door.h"
#include "elevator.h"
#include "hcsr04.h"
#include "DebouncedIn.h"

#define LEVEL_1 46
#define LEVEL_2 26
#define LEVEL_3 6
#define ID_DOORS 1
#define ID_ELEVATOR 2

Door door_1(PTD2);
Door door_2(PTD0);
Door door_3(PTD5);

Elevator elevator1(PTA12, PTD4, PTA4);

HCSR04 sensor(PTD3, PTD1);

DigitalIn floor1(PTB2);
DigitalIn floor2up(PTB3);
DigitalIn floor2down(PTC2);
DigitalIn floor3(PTC1);
DigitalIn floor1int(PTB1);
DigitalIn floor2int(PTB0);
DigitalIn floor3int(PTA5);
DigitalIn stop(PTC8);
DigitalIn open_door(PTA13);
DigitalIn close_door(PTC9);


Serial pc(PTA2, PTA1);

int level_ = LEVEL_1;
int pos_sensor = 0, flag = 0;


int main()
{
    while(true) 
    {   
               
        if((floor3 == 0) || (floor3int == 0))
        {
             pc.printf("3");
             level_ = LEVEL_3;                  
             wait(2);
        }
        if(floor2int == 0)
        {
           pc.printf("2");
           level_ = LEVEL_2;
           wait(2);
        }
        if((floor1 == 0) || (floor1int == 0))
        {
           pc.printf("1");
           level_ = LEVEL_1;
           wait(2);
        }
        if(stop == 0)
        {
            pc.printf("e");
        }
        if(open_door == 0)
                {
                    switch(level_)
                    {
                        case LEVEL_1:
                            door_1.open();
                        break;
                        case LEVEL_2:
                            door_2.open();
                        break;
                        case LEVEL_3:
                            door_3.open();
                        break;
                    }
                    wait(2);
                }
                 
        if(close_door == 0)
                {
                    switch(level_)
                    {
                        case LEVEL_1:
                            door_1.close();
                        break;
                        case LEVEL_2:
                            door_2.close();
                        break;
                        case LEVEL_3:
                            door_3.close();
                        break;
                    }
                    wait(2);
                }
        while(floor2down == 0)
        {
           pc.printf("d");
           elevator1.go_down();
           flag = 1;
        }
        while(floor2up == 0)
        {
           pc.printf("u");
           elevator1.go_up();
           flag = 1;
        }
        if(flag == 1)
        {
        elevator1.off();
        pc.printf("p");
        flag = 0;
        }
    }
}