![](/media/cache/profiles/15ae3b9d6286f1b2a489ea4f3f4abaed.50x50_q85.jpg)
Hello World test program for mRotaryEncoder.
Revision 0:84ef638f3691, committed 2010-11-29
- Comitter:
- charly
- Date:
- Mon Nov 29 21:27:28 2010 +0000
- Commit message:
- Initial version
Changed in this revision
diff -r 000000000000 -r 84ef638f3691 mRotaryEncoder.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mRotaryEncoder.lib Mon Nov 29 21:27:28 2010 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/charly/code/mRotaryEncoder/#75ddffaf3721
diff -r 000000000000 -r 84ef638f3691 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Nov 29 21:27:28 2010 +0000 @@ -0,0 +1,119 @@ +#include "mbed.h" +#include "mRotaryEncoder.h" + +/** Test the Library for mechanical rotary encoders with pushbutton + * like this one from alps http://www.alps.com/WebObjects/catalog.woa/E/HTML/Encoder/Incremental/EC11/EC11E09244BS.shtml + * should work for any other incremental encoder with button + */ + +// mbed LEDs +DigitalOut led1(LED1); +DigitalOut led2(LED2); +DigitalOut led3(LED3); +DigitalOut led4(LED4); + +Serial pcout(USBTX, USBRX); + + +//mRotaryEncoder(PinName pinA, PinName pinB, PinName pinSW, PinMode pullMode=PullUp, int debounceTime_us=1000) +mRotaryEncoder wheel(p21, p22, p23); + + +int lastGet; +int thisGet; + + +bool enc_pressed = false; // Button of rotaryencoder was pressed +bool enc_rotated = false; // rotary encoder was totaded left or right + + +//interrup-Handler for button on rotary-encoder +void trigger_sw() { + enc_pressed = true; // just set the flag, rest is done outside isr +} + +//interrup-Handler for rotary-encoder rotation +void trigger_rotated() { + enc_rotated = true; // just set the flag, rest is done outside isr +} + + +// display int-Value on the 4 LEDS +void displayLED(int value) { + switch (abs(value) % 4) { // Get 2 LSBs and display sequence on mbed LEDs + case 0: + led1 = 1; + led2 = 0; + led3 = 0; + led4 = 0; + break; + case 1: + led1 = 0; + led2 = 1; + led3 = 0; + led4 = 0; + break; + case 2: + led1 = 0; + led2 = 0; + led3 = 1; + led4 = 0; + break; + default: + led1 = 0; + led2 = 0; + led3 = 0; + led4 = 1; + break; + } // switch +} + +int main() { + + pcout.printf("\n\rconnected to mbed...\n\r"); + + //Int-Handler + // call trigger_sw() when button of rotary-encoder is pressed + wheel.attachSW(&trigger_sw); + + // call trigger_rot() when the shaft is rotaded left or right + wheel.attachROT(&trigger_rotated); + + lastGet = 0; + + // set encrotated, so position is displayed on startup + enc_rotated = true; + + while (1) { + + + // shaft has been rotated? + if (enc_rotated) { + enc_rotated = false; + + thisGet = wheel.Get(); + + displayLED(thisGet); + pcout.printf ("Pulses is: %i\n\r", thisGet); + + } + + + // Button pressed? + if (enc_pressed) { + enc_pressed = false; + printf("triggered!\n\r"); + + wheel.Set(0); + + //Update displays + thisGet = wheel.Get(); + displayLED(thisGet); + pcout.printf ("\n\rPulses is: %i\n\r", thisGet); + + } + //do something else + + } + +}
diff -r 000000000000 -r 84ef638f3691 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon Nov 29 21:27:28 2010 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/e2ac27c8e93e