Switch-led, interrupt, PinDetect Lib

Dependencies:   DebounceIn PinDetect mbed

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?

UserRevisionLine numberNew 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 }