a simple code for elevator

Dependencies:   PinDetect mbed Servo

Committer:
kemken
Date:
Mon Jun 04 13:51:43 2012 +0000
Revision:
0:85829f7bbe62

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kemken 0:85829f7bbe62 1 /*
kemken 0:85829f7bbe62 2 * SWITCH DEBOUNCING
kemken 0:85829f7bbe62 3 * ^^^^^^ ^^^^^^^^^^
kemken 0:85829f7bbe62 4 *
kemken 0:85829f7bbe62 5 * FILE NAME: PIN_DETECT.cpp
kemken 0:85829f7bbe62 6 * USAGE: Extends DigitalIn to add mechanical switch deboucing of inputs.
kemken 0:85829f7bbe62 7 */
kemken 0:85829f7bbe62 8
kemken 0:85829f7bbe62 9
kemken 0:85829f7bbe62 10 /*
kemken 0:85829f7bbe62 11 * including the wanted library files.
kemken 0:85829f7bbe62 12 */
kemken 0:85829f7bbe62 13 #include "mbed.h"
kemken 0:85829f7bbe62 14 #include "main.h"
kemken 0:85829f7bbe62 15 #include "PIN_DETECT.h"
kemken 0:85829f7bbe62 16 #include "PinDetect.h"
kemken 0:85829f7bbe62 17
kemken 0:85829f7bbe62 18 /********************************************************************************
kemken 0:85829f7bbe62 19 *********************************************************************************
kemken 0:85829f7bbe62 20 ******* WARNING: to used this file, PinDetect library must be import ************
kemken 0:85829f7bbe62 21 ******* into the program ************
kemken 0:85829f7bbe62 22 *********************************************************************************
kemken 0:85829f7bbe62 23 *********************************************************************************/
kemken 0:85829f7bbe62 24
kemken 0:85829f7bbe62 25 PinDetect top_SW (p13);
kemken 0:85829f7bbe62 26 PinDetect NR_top_SW (p14);
kemken 0:85829f7bbe62 27 PinDetect bottom_SW (p15);
kemken 0:85829f7bbe62 28 PinDetect NR_bottom_SW (p16);
kemken 0:85829f7bbe62 29 PinDetect top_call (p17);
kemken 0:85829f7bbe62 30 PinDetect bottom_call (p19);
kemken 0:85829f7bbe62 31 PinDetect goto_top (p20);
kemken 0:85829f7bbe62 32 PinDetect goto_bottom (p21);
kemken 0:85829f7bbe62 33 PinDetect safety_button (p22);
kemken 0:85829f7bbe62 34
kemken 0:85829f7bbe62 35 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>> functions callbacks follow <<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
kemken 0:85829f7bbe62 36 void SW_1 (void) { /* top switch pressed*/
kemken 0:85829f7bbe62 37 new_event(at_top);
kemken 0:85829f7bbe62 38 }
kemken 0:85829f7bbe62 39
kemken 0:85829f7bbe62 40 void SW_2 (void) { /*near top switch pressed*/
kemken 0:85829f7bbe62 41 new_event(NR_top);
kemken 0:85829f7bbe62 42 }
kemken 0:85829f7bbe62 43
kemken 0:85829f7bbe62 44 void SW_3(void) { /*near bottom switch pressed*/
kemken 0:85829f7bbe62 45 new_event(NR_bottom);
kemken 0:85829f7bbe62 46 }
kemken 0:85829f7bbe62 47
kemken 0:85829f7bbe62 48 void SW_4 (void) { /*bottom switch pressed*/
kemken 0:85829f7bbe62 49 new_event(at_bottom);
kemken 0:85829f7bbe62 50 }
kemken 0:85829f7bbe62 51
kemken 0:85829f7bbe62 52 void SW_5 (void) { /*top call button pressed*/
kemken 0:85829f7bbe62 53 new_event(call_2);
kemken 0:85829f7bbe62 54 flag_call_2=1;
kemken 0:85829f7bbe62 55 }
kemken 0:85829f7bbe62 56
kemken 0:85829f7bbe62 57 void SW_6 (void) { /*bottom call button pressed*/
kemken 0:85829f7bbe62 58 new_event(call_1);
kemken 0:85829f7bbe62 59 flag_call_1=1;
kemken 0:85829f7bbe62 60 }
kemken 0:85829f7bbe62 61
kemken 0:85829f7bbe62 62 void SW_7 (void) { /*go to top button*/
kemken 0:85829f7bbe62 63 new_event(B_level_2);
kemken 0:85829f7bbe62 64 }
kemken 0:85829f7bbe62 65
kemken 0:85829f7bbe62 66 void SW_8 (void) { /*go to bottom button*/
kemken 0:85829f7bbe62 67 new_event(B_level_1);
kemken 0:85829f7bbe62 68 }
kemken 0:85829f7bbe62 69
kemken 0:85829f7bbe62 70 void SW_9 (void) { /*safety switch*/
kemken 0:85829f7bbe62 71 new_event(safety);
kemken 0:85829f7bbe62 72 }
kemken 0:85829f7bbe62 73
kemken 0:85829f7bbe62 74 // C function for pin detect
kemken 0:85829f7bbe62 75
kemken 0:85829f7bbe62 76 void switches (void) {
kemken 0:85829f7bbe62 77 // Debouncing >>>>
kemken 0:85829f7bbe62 78
kemken 0:85829f7bbe62 79 // for switch 1 (top switch)
kemken 0:85829f7bbe62 80 top_SW.mode( PullUp );
kemken 0:85829f7bbe62 81 top_SW.setAssertValue(0);
kemken 0:85829f7bbe62 82 top_SW.attach_asserted( &SW_1 );
kemken 0:85829f7bbe62 83 top_SW.setSampleFrequency();
kemken 0:85829f7bbe62 84
kemken 0:85829f7bbe62 85
kemken 0:85829f7bbe62 86 // for switch 2 (near top switch)
kemken 0:85829f7bbe62 87 NR_top_SW.mode( PullUp );
kemken 0:85829f7bbe62 88 NR_top_SW.setAssertValue(0);
kemken 0:85829f7bbe62 89 NR_top_SW.attach_asserted( &SW_2 );
kemken 0:85829f7bbe62 90 NR_top_SW.setSampleFrequency();// Defaults to 20ms.
kemken 0:85829f7bbe62 91
kemken 0:85829f7bbe62 92
kemken 0:85829f7bbe62 93 // for switch 3 (near bottom switch)
kemken 0:85829f7bbe62 94 bottom_SW.mode( PullUp );
kemken 0:85829f7bbe62 95 bottom_SW.setAssertValue(0);
kemken 0:85829f7bbe62 96 bottom_SW.attach_asserted( &SW_3 );
kemken 0:85829f7bbe62 97 bottom_SW.setSampleFrequency();// Defaults to 20ms.
kemken 0:85829f7bbe62 98
kemken 0:85829f7bbe62 99
kemken 0:85829f7bbe62 100 // for switch 4 (bottom switch)
kemken 0:85829f7bbe62 101 NR_bottom_SW.mode( PullUp );
kemken 0:85829f7bbe62 102 NR_bottom_SW.setAssertValue(0);
kemken 0:85829f7bbe62 103 NR_bottom_SW.attach_asserted( &SW_4 );
kemken 0:85829f7bbe62 104 NR_bottom_SW.setSampleFrequency();// Defaults to 20ms.
kemken 0:85829f7bbe62 105
kemken 0:85829f7bbe62 106
kemken 0:85829f7bbe62 107 // for switch 5 (top call switch)
kemken 0:85829f7bbe62 108 top_call.mode( PullUp );
kemken 0:85829f7bbe62 109 top_call.setAssertValue(0);
kemken 0:85829f7bbe62 110 top_call.attach_asserted( &SW_5 );
kemken 0:85829f7bbe62 111 top_call.setSampleFrequency();// Defaults to 20ms.
kemken 0:85829f7bbe62 112
kemken 0:85829f7bbe62 113
kemken 0:85829f7bbe62 114 // for switch 6 (bottom call switch)
kemken 0:85829f7bbe62 115 bottom_call.mode( PullUp );
kemken 0:85829f7bbe62 116 bottom_call.setAssertValue(0);
kemken 0:85829f7bbe62 117 bottom_call.attach_asserted( &SW_6 );
kemken 0:85829f7bbe62 118 bottom_call.setSampleFrequency();// Defaults to 20ms.
kemken 0:85829f7bbe62 119
kemken 0:85829f7bbe62 120
kemken 0:85829f7bbe62 121 // for switch 7 (level select button)
kemken 0:85829f7bbe62 122 goto_top.mode( PullUp );
kemken 0:85829f7bbe62 123 goto_top.setAssertValue(0);
kemken 0:85829f7bbe62 124 goto_top.attach_asserted( &SW_7 );
kemken 0:85829f7bbe62 125 goto_top.setSampleFrequency();// Defaults to 20ms.
kemken 0:85829f7bbe62 126
kemken 0:85829f7bbe62 127
kemken 0:85829f7bbe62 128 // for switch 8 (level select button)
kemken 0:85829f7bbe62 129 goto_bottom.mode( PullUp );
kemken 0:85829f7bbe62 130 goto_bottom.setAssertValue(0);
kemken 0:85829f7bbe62 131 goto_bottom.attach_asserted( &SW_8 );
kemken 0:85829f7bbe62 132 goto_bottom.setSampleFrequency();// Defaults to 20ms.
kemken 0:85829f7bbe62 133
kemken 0:85829f7bbe62 134
kemken 0:85829f7bbe62 135 // for switch 9 (safety switch)
kemken 0:85829f7bbe62 136 safety_button.mode( PullUp );
kemken 0:85829f7bbe62 137 safety_button.setAssertValue(0);
kemken 0:85829f7bbe62 138 safety_button.attach_asserted( &SW_9 );
kemken 0:85829f7bbe62 139 safety_button.setSampleFrequency();// Defaults to 20ms.
kemken 0:85829f7bbe62 140 }
kemken 0:85829f7bbe62 141
kemken 0:85829f7bbe62 142
kemken 0:85829f7bbe62 143 /********************************************************************************
kemken 0:85829f7bbe62 144 *********************************************************************************
kemken 0:85829f7bbe62 145 ******* for more detail about switch depancing program vist *************
kemken 0:85829f7bbe62 146 ******* http://mbed.org/users/AjK/libraries/PinDetect/lkyxpw *************
kemken 0:85829f7bbe62 147 *********************************************************************************
kemken 0:85829f7bbe62 148 *********************************************************************************/