a simple code for elevator
Dependencies: PinDetect mbed Servo
PIN_DETECT.cpp@0:85829f7bbe62, 2012-06-04 (annotated)
- Committer:
- kemken
- Date:
- Mon Jun 04 13:51:43 2012 +0000
- Revision:
- 0:85829f7bbe62
Who changed what in which revision?
User | Revision | Line number | New 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 | *********************************************************************************/ |