James Spadavecchia
/
tyco_encoder_test_02
main.cpp
- Committer:
- James1208
- Date:
- 2011-08-02
- Revision:
- 0:954607bc2d95
File content as of revision 0:954607bc2d95:
#include "mbed.h" DigitalIn enc_pb (p5); InterruptIn enc_A (p6); InterruptIn enc_B (p7); PwmOut led1 (p22); PwmOut led2 (p23); void enc_int_routine (void); bool enc_A_state; bool enc_B_state; bool old_enc_A_state; bool old_enc_B_state; int val_min = 0; int val_max = 100; int val = ((val_max - val_min) / 2) + val_min; int val_old = val; int main() { enc_pb.mode(PullUp); enc_A.mode(PullUp); enc_B.mode(PullUp); enc_A_state = enc_A; enc_B_state = enc_B; enc_A.rise(&enc_int_routine); enc_B.rise(&enc_int_routine); enc_A.fall(&enc_int_routine); enc_B.fall(&enc_int_routine); while (1) { if (val != val_old) { printf("\n\r%i",val); } // if (val != val_old) val_old = val; if (enc_pb) { led1 = val / 100.0; led2 = 1.0 - (val / 100.0); } else { printf("button\n\r"); led1 = 0; led2 = 0; } // if (enc_pb) } // while(1) } // end main void enc_int_routine (void) { old_enc_A_state = enc_A_state; old_enc_B_state = enc_B_state; enc_A_state = enc_A; enc_B_state = enc_B; 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))) { val = val; } else { if (enc_A_state ^ old_enc_B_state) { val -= 1; } else { val += 1; } // (enc_A_state ^ old_enc_B_state) } // if ((enc_A_state != old_enc_A_state) && (enc_B_state != old_enc_B_state)) } // end enc_A_int_routine