Mbed elevator

From emboxit
Jump to: navigation, search



<cpp> /***********************************************************************/

/* STATE MACHINE ASSIGMENT_ENB5050 */

/* Written by Rufaida A.Rhim ,Noora A.Aziz */

/* Date 13-May-2012 */

/* This program is written for ELEVATOR */

/***********************************************************************/

  1. include "mbed.h"
  2. include "definitions.h"
  3. include "actions.h"
  4. include "events.h"
  5. include "ding.h"
  6. include "door_leds.h"
  7. include "Motor.h"

events event; states state;

/*check the program on PuTTY */ const char event_lookup[MAX_EVENTS][25] ={"ev_Go_To_Bottom_Button", "ev_Go_To_Top_Button", "ev_Bottom_Call_Button", "ev_Top_Call_Button", "ev_Near_Top_Button", "ev_Near_Bottom_Button", "ev_Top_Button", "ev_Bottom_Button", "ev_Timeout", "ev_Safety","ev_loading_event"}; const char state_lookup[MAX_STATES][25] ={"st_At_Top_Closed", "st_Going_Bottom", "st_Wait_For_Bottom", "st_Wait_For_Ding_Bottom", "st_Wait_For_door_Bottom","st_At_Bottom_Closed", "st_Going_Up","st_Wait_For_Top,", "st_Wait_For_Ding_Top", "st_Wait_For_door_Top", "st_Wait_For_Safety", "st_Wait_For_Bottom_Floor"};

/* This is the state table with actions, states, and events */ void (*const state_table [MAX_STATES][MAX_EVENTS]) (void)={ // ev_Go_To_Bottom_Button ev_Go_To_Top_Button ev_Bottom_Call_Button ev_Top_Call_Button ev_Near_Top_Button ev_Near_Bottom_Button ev_Top_Button ev_Bottom_Button ev_Timeout ev_Safety ev_loading_event

   {     act_ramp_motor_down,            act_open_close_Top_door,    act_ramp_motor_down,             act_open_close_Top_door,   do_nothing,                     do_nothing,                     act_stop_motor_ding_top,     do_nothing,                   do_nothing,                          act_slow_to_dowm,     do_nothing              },        //function for state st_At_Top_Closed
   {     do_nothing,                     do_nothing,                 do_nothing,                      do_nothing,                do_nothing,                     act_slow_speed_down,            do_nothing,                  do_nothing,                   do_nothing,                          do_nothing,           do_nothing              },        //function for state st_Going_Bottom
   {     do_nothing,                     do_nothing,                 do_nothing,                      do_nothing,                do_nothing,                     act_slow_speed_down,            do_nothing,                  act_stop_motor_ding_bottom,   do_nothing,                          do_nothing,           do_nothing              },        //function for state st_Wait_For_Bottom
   {     do_nothing,                     do_nothing,                 do_nothing,                      do_nothing,                do_nothing,                     do_nothing,                     do_nothing,                  do_nothing,                   act_open_close_Bottom_door,          do_nothing,           do_nothing              },        //function for state st_Wait_For_Ding_Bottom
   {     do_nothing,                     do_nothing,                 do_nothing,                      do_nothing,                do_nothing,                     do_nothing,                     do_nothing,                  do_nothing,                   act_bottom_close,                    do_nothing,           do_nothing              },        //function for state st_Wait_For_door_Bottom
   {     act_open_close_Bottom_door,     act_ramp_motor_up,          act_open_close_Bottom_door,      act_ramp_motor_up,         do_nothing,                     do_nothing,                     do_nothing,                  act_stop_motor_ding_bottom,   do_nothing,                          do_nothing,           do_nothing              },        //function for state st_At_Bottom_Closed
   {     do_nothing,                     do_nothing,                 do_nothing,                      do_nothing,                act_slow_speed_up,              do_nothing,                     do_nothing,                  do_nothing,                   do_nothing,                          act_slow_to_dowm,     do_nothing              },        //function for state st_Going_Up
   {     do_nothing,                     do_nothing,                 do_nothing,                      do_nothing,                do_nothing,                     do_nothing,                     act_stop_motor_ding_top,     do_nothing,                   do_nothing,                          act_slow_to_dowm,     do_nothing              },        //function for state st_Wait_For_Top
   {     do_nothing,                     do_nothing,                 do_nothing,                      do_nothing,                do_nothing,                     do_nothing,                     do_nothing,                  do_nothing,                   act_open_close_Top_door,             do_nothing,           do_nothing              },        //function for state st_wait_For_Ding_Top
   {     do_nothing,                     do_nothing,                 do_nothing,                      do_nothing,                do_nothing,                     do_nothing,                     do_nothing,                  do_nothing,                   act_top_close,                       do_nothing,           do_nothing              },        //function for state st_Wait_For_door_Top
   {     do_nothing,                     do_nothing,                 do_nothing,                      do_nothing,                do_nothing,                     do_nothing,                     do_nothing,                  do_nothing,                   do_nothing,                          act_slow_to_dowm,     do_nothing              },         //function for state st_Wait_For_Safety
   {     do_nothing,                     do_nothing,                 do_nothing,                      do_nothing,                do_nothing,                     do_nothing,                     do_nothing,                  act_stop_motor_ding_bottom,   do_nothing,                          do_nothing,           do_nothing              },        //function for state st_Wait_For_Bottom_Floor

}; /*the main function which starts the doors,motor and ding*/ int main (void) {

   Starting_Motor();
   initialise_events();
   Start_up_sound();
   Starting_LEDS();
   motor(up_slow,0);

   state = st_Wait_For_Safety;
   printf("Statrting State: %s\n",state_lookup[state]);


   while (1) {
       event=get_event();
       printf("Event: %s    ",event_lookup[event]);
       state_table[state][event]();
       printf("State: %s\n",state_lookup[state]);
   }

} </cpp>