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.
Diff: ExioMcp23s17RotaryEncoder.cpp
- Revision:
- 6:1b3511093630
- Parent:
- 5:b82675c50720
- Child:
- 9:b0e9ec45a720
--- a/ExioMcp23s17RotaryEncoder.cpp Wed Nov 02 04:16:46 2016 +0000
+++ b/ExioMcp23s17RotaryEncoder.cpp Wed Nov 02 05:24:18 2016 +0000
@@ -31,17 +31,23 @@
/**
* Create rotary encoder.
- *
+ * @param device
+ * @param port
* @param pin1
* @param pin2
* @param min Minimum value.
* @param max Maximum value.
* @param val Default value.
*/
-ExioMcp23s17RotaryEncoder::ExioMcp23s17RotaryEncoder(ExioMcp23s17DigitalIn& _pin1, ExioMcp23s17DigitalIn& _pin2, int min, int max, int val)
- : pin1(_pin1), pin2(_pin2), min(min), max(max), val(val) {
- pin1.mode(PullUp);
- pin2.mode(PullUp);
+ExioMcp23s17RotaryEncoder::ExioMcp23s17RotaryEncoder(
+ ExioMcp23s17& device, ExioPort port, int pin1_n, int pin2_n,
+ int min, int max, int val)
+ : min(min), max(max), val(val)
+{
+ in1 = new ExioMcp23s17DigitalIn(device, port, pin1_n);
+ in2 = new ExioMcp23s17DigitalIn(device, port, pin2_n);
+ in1->mode(PullUp);
+ in2->mode(PullUp);
ticker.attach_us(this, &ExioMcp23s17RotaryEncoder::func_ticker, 500);
}
@@ -49,6 +55,8 @@
* Dispose.
*/
ExioMcp23s17RotaryEncoder::~ExioMcp23s17RotaryEncoder() {
+ delete in1;
+ delete in2;
}
/**
@@ -57,7 +65,7 @@
void ExioMcp23s17RotaryEncoder::func_ticker() {
//static uint8_t code;
- code = (code << 2) + (((pin1.read() << 1) | (pin2.read() << 0)) & 3);
+ code = (code << 2) + (((in1->read() << 1) | (in2->read() << 0)) & 3);
code &= 15;
switch (code) {
case 0x7: