Dependencies:   mbed

Committer:
James1208
Date:
Tue Aug 02 10:28:54 2011 +0000
Revision:
0:954607bc2d95

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
James1208 0:954607bc2d95 1 #include "mbed.h"
James1208 0:954607bc2d95 2
James1208 0:954607bc2d95 3 DigitalIn enc_pb (p5);
James1208 0:954607bc2d95 4 InterruptIn enc_A (p6);
James1208 0:954607bc2d95 5 InterruptIn enc_B (p7);
James1208 0:954607bc2d95 6 PwmOut led1 (p22);
James1208 0:954607bc2d95 7 PwmOut led2 (p23);
James1208 0:954607bc2d95 8
James1208 0:954607bc2d95 9 void enc_int_routine (void);
James1208 0:954607bc2d95 10
James1208 0:954607bc2d95 11 bool enc_A_state;
James1208 0:954607bc2d95 12 bool enc_B_state;
James1208 0:954607bc2d95 13 bool old_enc_A_state;
James1208 0:954607bc2d95 14 bool old_enc_B_state;
James1208 0:954607bc2d95 15 int val_min = 0;
James1208 0:954607bc2d95 16 int val_max = 100;
James1208 0:954607bc2d95 17 int val = ((val_max - val_min) / 2) + val_min;
James1208 0:954607bc2d95 18 int val_old = val;
James1208 0:954607bc2d95 19
James1208 0:954607bc2d95 20 int main() {
James1208 0:954607bc2d95 21 enc_pb.mode(PullUp);
James1208 0:954607bc2d95 22 enc_A.mode(PullUp);
James1208 0:954607bc2d95 23 enc_B.mode(PullUp);
James1208 0:954607bc2d95 24 enc_A_state = enc_A;
James1208 0:954607bc2d95 25 enc_B_state = enc_B;
James1208 0:954607bc2d95 26 enc_A.rise(&enc_int_routine);
James1208 0:954607bc2d95 27 enc_B.rise(&enc_int_routine);
James1208 0:954607bc2d95 28 enc_A.fall(&enc_int_routine);
James1208 0:954607bc2d95 29 enc_B.fall(&enc_int_routine);
James1208 0:954607bc2d95 30 while (1) {
James1208 0:954607bc2d95 31 if (val != val_old) {
James1208 0:954607bc2d95 32 printf("\n\r%i",val);
James1208 0:954607bc2d95 33 } // if (val != val_old)
James1208 0:954607bc2d95 34 val_old = val;
James1208 0:954607bc2d95 35 if (enc_pb) {
James1208 0:954607bc2d95 36 led1 = val / 100.0;
James1208 0:954607bc2d95 37 led2 = 1.0 - (val / 100.0);
James1208 0:954607bc2d95 38 } else {
James1208 0:954607bc2d95 39 printf("button\n\r");
James1208 0:954607bc2d95 40 led1 = 0;
James1208 0:954607bc2d95 41 led2 = 0;
James1208 0:954607bc2d95 42 } // if (enc_pb)
James1208 0:954607bc2d95 43 } // while(1)
James1208 0:954607bc2d95 44 } // end main
James1208 0:954607bc2d95 45
James1208 0:954607bc2d95 46 void enc_int_routine (void) {
James1208 0:954607bc2d95 47 old_enc_A_state = enc_A_state;
James1208 0:954607bc2d95 48 old_enc_B_state = enc_B_state;
James1208 0:954607bc2d95 49 enc_A_state = enc_A;
James1208 0:954607bc2d95 50 enc_B_state = enc_B;
James1208 0:954607bc2d95 51 if (((enc_A_state != old_enc_A_state) && (enc_B_state != old_enc_B_state)) || ((enc_A_state == old_enc_A_state) && (enc_B_state == old_enc_B_state))) {
James1208 0:954607bc2d95 52 val = val;
James1208 0:954607bc2d95 53 } else {
James1208 0:954607bc2d95 54 if (enc_A_state ^ old_enc_B_state) {
James1208 0:954607bc2d95 55 val -= 1;
James1208 0:954607bc2d95 56 } else {
James1208 0:954607bc2d95 57 val += 1;
James1208 0:954607bc2d95 58 } // (enc_A_state ^ old_enc_B_state)
James1208 0:954607bc2d95 59 } // if ((enc_A_state != old_enc_A_state) && (enc_B_state != old_enc_B_state))
James1208 0:954607bc2d95 60 } // end enc_A_int_routine