Testprogram for mRotaryEncoder-os
Dependencies: mRotaryEncoder-os PinDetect
Revision 0:f68c653e1f94, committed 2021-03-16
- Comitter:
- charly
- Date:
- Tue Mar 16 20:20:05 2021 +0000
- Child:
- 1:e73cd7f0324c
- Commit message:
- Initial Version for mbed-os
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PinDetect.lib Tue Mar 16 20:20:05 2021 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/reedas/code/PinDetect/#d552d2899765
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mRotaryEncoder-os.lib Tue Mar 16 20:20:05 2021 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/charly/code/mRotaryEncoder/#1925aac090b7
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Tue Mar 16 20:20:05 2021 +0000
@@ -0,0 +1,122 @@
+#include "mbed.h"
+//#include "USBSerial.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);
+
+//USBSerial pcout;
+static BufferedSerial pcout(USBTX, USBRX); // tx, rx
+
+
+//mRotaryEncoder(PinName pinA, PinName pinB, PinName pinSW, PinMode pullMode=PullUp, int debounceTime_us=1000)
+mRotaryEncoder wheel(p16, p17, p18,PullUp,1500);
+
+
+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.set_baud(115200);
+ 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);
+ 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);
+ printf ("\n\rPulses is: %i\n\r", thisGet);
+
+ }
+ //do something else
+
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-os.lib Tue Mar 16 20:20:05 2021 +0000 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/mbed-os/#0c6753bb821612eb72b5f682aed7ffcc98e80a1f