
Switch-led, interrupt, PinDetect Lib
Dependencies: DebounceIn PinDetect mbed
main.cpp@0:eb94cfc93645, 2015-11-16 (annotated)
- Committer:
- vjain419
- Date:
- Mon Nov 16 13:35:33 2015 +0000
- Revision:
- 0:eb94cfc93645
- Child:
- 1:0bbf5bbbf85b
switc-led using interrupt routine and PinDetect lib
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
vjain419 | 0:eb94cfc93645 | 1 | #include "mbed.h" |
vjain419 | 0:eb94cfc93645 | 2 | #include "PinDetect.h" |
vjain419 | 0:eb94cfc93645 | 3 | DigitalOut l1(LED1); |
vjain419 | 0:eb94cfc93645 | 4 | DigitalOut l2(LED2); |
vjain419 | 0:eb94cfc93645 | 5 | DigitalOut l3(LED3); |
vjain419 | 0:eb94cfc93645 | 6 | DigitalOut l4(LED4); |
vjain419 | 0:eb94cfc93645 | 7 | PinDetect pb(p8); |
vjain419 | 0:eb94cfc93645 | 8 | // SPST Pushbutton demo using internal PullUp function |
vjain419 | 0:eb94cfc93645 | 9 | // no external PullUp resistor needed |
vjain419 | 0:eb94cfc93645 | 10 | // Pushbutton from P8 to GND. |
vjain419 | 0:eb94cfc93645 | 11 | |
vjain419 | 0:eb94cfc93645 | 12 | // Global count variable |
vjain419 | 0:eb94cfc93645 | 13 | int volatile count=0; |
vjain419 | 0:eb94cfc93645 | 14 | //int volatile hit = 1; |
vjain419 | 0:eb94cfc93645 | 15 | |
vjain419 | 0:eb94cfc93645 | 16 | void light_left_2_right(int mode){ |
vjain419 | 0:eb94cfc93645 | 17 | for(int i=0;i<4 ;i++) { |
vjain419 | 0:eb94cfc93645 | 18 | l4 = 1 >> i; |
vjain419 | 0:eb94cfc93645 | 19 | l3 = 2 >> i; |
vjain419 | 0:eb94cfc93645 | 20 | l2 = 4 >> i; |
vjain419 | 0:eb94cfc93645 | 21 | l1 = 8 >> i; |
vjain419 | 0:eb94cfc93645 | 22 | if(mode) //fast |
vjain419 | 0:eb94cfc93645 | 23 | wait(0.1); |
vjain419 | 0:eb94cfc93645 | 24 | else //slow |
vjain419 | 0:eb94cfc93645 | 25 | wait(0.3); |
vjain419 | 0:eb94cfc93645 | 26 | } |
vjain419 | 0:eb94cfc93645 | 27 | } |
vjain419 | 0:eb94cfc93645 | 28 | |
vjain419 | 0:eb94cfc93645 | 29 | void light_right_2_left(int mode){ |
vjain419 | 0:eb94cfc93645 | 30 | for(int i=0;i<4 ;i++) { |
vjain419 | 0:eb94cfc93645 | 31 | l1 = 1 >> i; |
vjain419 | 0:eb94cfc93645 | 32 | l2 = 2 >> i; |
vjain419 | 0:eb94cfc93645 | 33 | l3 = 4 >> i; |
vjain419 | 0:eb94cfc93645 | 34 | l4 = 8 >> i; |
vjain419 | 0:eb94cfc93645 | 35 | if(mode) //fast |
vjain419 | 0:eb94cfc93645 | 36 | wait(0.1); |
vjain419 | 0:eb94cfc93645 | 37 | else //slow |
vjain419 | 0:eb94cfc93645 | 38 | wait(0.3); |
vjain419 | 0:eb94cfc93645 | 39 | } |
vjain419 | 0:eb94cfc93645 | 40 | } |
vjain419 | 0:eb94cfc93645 | 41 | |
vjain419 | 0:eb94cfc93645 | 42 | void blink_me(void) { |
vjain419 | 0:eb94cfc93645 | 43 | int mode; |
vjain419 | 0:eb94cfc93645 | 44 | mode = count %4; |
vjain419 | 0:eb94cfc93645 | 45 | if(mode == 0) light_left_2_right(0); |
vjain419 | 0:eb94cfc93645 | 46 | if(mode == 1) light_right_2_left(0); |
vjain419 | 0:eb94cfc93645 | 47 | if(mode == 2) light_left_2_right(1); |
vjain419 | 0:eb94cfc93645 | 48 | if(mode == 3) light_right_2_left(1; |
vjain419 | 0:eb94cfc93645 | 49 | } |
vjain419 | 0:eb94cfc93645 | 50 | |
vjain419 | 0:eb94cfc93645 | 51 | void p8_release_callback(void) { |
vjain419 | 0:eb94cfc93645 | 52 | l4=0; |
vjain419 | 0:eb94cfc93645 | 53 | l3=0; |
vjain419 | 0:eb94cfc93645 | 54 | l2=0; |
vjain419 | 0:eb94cfc93645 | 55 | l1=0; |
vjain419 | 0:eb94cfc93645 | 56 | } |
vjain419 | 0:eb94cfc93645 | 57 | |
vjain419 | 0:eb94cfc93645 | 58 | void p8_hit_callback(void) { |
vjain419 | 0:eb94cfc93645 | 59 | count++; |
vjain419 | 0:eb94cfc93645 | 60 | wait(0.01); |
vjain419 | 0:eb94cfc93645 | 61 | } |
vjain419 | 0:eb94cfc93645 | 62 | |
vjain419 | 0:eb94cfc93645 | 63 | int main() { |
vjain419 | 0:eb94cfc93645 | 64 | pb.mode(PullUp); |
vjain419 | 0:eb94cfc93645 | 65 | wait(0.01); |
vjain419 | 0:eb94cfc93645 | 66 | // Setup Interrupt callback functions for a pb hit |
vjain419 | 0:eb94cfc93645 | 67 | pb.attach_deasserted(&p8_hit_callback); |
vjain419 | 0:eb94cfc93645 | 68 | pb.attach_asserted(&p8_release_callback); |
vjain419 | 0:eb94cfc93645 | 69 | // Start sampling pb inputs using interrupts |
vjain419 | 0:eb94cfc93645 | 70 | pb.setSampleFrequency(); |
vjain419 | 0:eb94cfc93645 | 71 | while(1) { |
vjain419 | 0:eb94cfc93645 | 72 | blink_me(); |
vjain419 | 0:eb94cfc93645 | 73 | } |
vjain419 | 0:eb94cfc93645 | 74 | } |