Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 #include "mbed.h" 00002 00003 DigitalIn sw_in (p5); 00004 InterruptIn enc_a (p6); 00005 InterruptIn enc_b (p7); 00006 PwmOut led1 (p22); 00007 PwmOut led2 (p23); 00008 00009 void enc_a_int_routine (void); 00010 void enc_b_int_routine (void); 00011 00012 bool enc_a_state; 00013 bool enc_b_state; 00014 bool old_enc_a_state; 00015 bool old_enc_b_state; 00016 int val_min = 0; 00017 int val_max = 100; 00018 int val = ((val_max - val_min) / 2) + val_min; 00019 int val_old = val; 00020 00021 int main() { 00022 sw_in.mode(PullUp); 00023 enc_a.mode(PullUp); 00024 enc_b.mode(PullUp); 00025 enc_a_state = enc_a; 00026 enc_b_state = enc_b; 00027 enc_a.rise(&enc_a_int_routine); 00028 enc_b.rise(&enc_b_int_routine); 00029 enc_a.fall(&enc_a_int_routine); 00030 enc_b.fall(&enc_b_int_routine); 00031 while (1) { 00032 if (val != val_old) { 00033 printf("\n\r%i",val); 00034 } // if (val != val_old) 00035 val_old = val; 00036 if (sw_in) { 00037 led1 = val / 100.0; 00038 led2 = 1.0 - (val / 100.0); 00039 } else { 00040 printf("button\n\r"); 00041 led1 = 0; 00042 led2 = 0; 00043 } // if (sw_in) 00044 } // while(1) 00045 } // end main 00046 00047 void enc_a_int_routine (void) { 00048 old_enc_a_state = enc_a_state; 00049 old_enc_b_state = enc_b_state; 00050 enc_a_state = enc_a; 00051 enc_b_state = enc_b; 00052 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))) { 00053 val = val; 00054 } else { 00055 if (enc_a_state ^ old_enc_b_state) { 00056 val -= 1; 00057 } else { 00058 val += 1; 00059 } // (enc_a_state ^ old_enc_b_state) 00060 } // if ((enc_a_state != old_enc_a_state) && (enc_b_state != old_enc_b_state)) 00061 } // end enc_a_int_routine 00062 00063 void enc_b_int_routine (void) { 00064 old_enc_a_state = enc_a_state; 00065 old_enc_b_state = enc_b_state; 00066 enc_a_state = enc_a; 00067 enc_b_state = enc_b; 00068 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))) { 00069 val = val; 00070 } else { 00071 if (enc_a_state ^ old_enc_b_state) { 00072 val -= 1; 00073 } else { 00074 val += 1; 00075 } // (enc_a_state ^ old_enc_b_state) 00076 } // if ((enc_a_state != old_enc_a_state) && (enc_b_state != old_enc_b_state)) 00077 } // end enc_a_int_routine
Generated on Thu Jul 28 2022 11:35:59 by
1.7.2