Rotary encoder library. Add: void setInterval(timestamp_t t) for Nucleo F401RE

Dependents:   BSM02

Fork of RotaryEncoder by Shinichiro Nakamura

Committer:
ryood
Date:
Sat Sep 22 23:45:16 2018 +0000
Revision:
6:cfc8f362bce6
Parent:
5:60c44df48016
Corresponds to Callback class

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shintamainjp 0:6537b3b709b6 1 /**
shintamainjp 0:6537b3b709b6 2 * =============================================================================
shintamainjp 0:6537b3b709b6 3 * Rotary Encoder class (Version 0.0.1)
shintamainjp 0:6537b3b709b6 4 * =============================================================================
shintamainjp 0:6537b3b709b6 5 * Copyright (c) 2010 Shinichiro Nakamura (CuBeatSystems)
shintamainjp 0:6537b3b709b6 6 *
shintamainjp 0:6537b3b709b6 7 * Permission is hereby granted, free of charge, to any person obtaining a copy
shintamainjp 0:6537b3b709b6 8 * of this software and associated documentation files (the "Software"), to deal
shintamainjp 0:6537b3b709b6 9 * in the Software without restriction, including without limitation the rights
shintamainjp 0:6537b3b709b6 10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
shintamainjp 0:6537b3b709b6 11 * copies of the Software, and to permit persons to whom the Software is
shintamainjp 0:6537b3b709b6 12 * furnished to do so, subject to the following conditions:
shintamainjp 0:6537b3b709b6 13 *
shintamainjp 0:6537b3b709b6 14 * The above copyright notice and this permission notice shall be included in
shintamainjp 0:6537b3b709b6 15 * all copies or substantial portions of the Software.
shintamainjp 0:6537b3b709b6 16 *
shintamainjp 0:6537b3b709b6 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
shintamainjp 0:6537b3b709b6 18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
shintamainjp 0:6537b3b709b6 19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
shintamainjp 0:6537b3b709b6 20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
shintamainjp 0:6537b3b709b6 21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
shintamainjp 0:6537b3b709b6 22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
shintamainjp 0:6537b3b709b6 23 * THE SOFTWARE.
shintamainjp 0:6537b3b709b6 24 * =============================================================================
shintamainjp 0:6537b3b709b6 25 */
shintamainjp 0:6537b3b709b6 26
shintamainjp 0:6537b3b709b6 27 #ifndef ROTARY_ENCODER_H
shintamainjp 0:6537b3b709b6 28 #define ROTARY_ENCODER_H
shintamainjp 0:6537b3b709b6 29
shintamainjp 0:6537b3b709b6 30 #include "mbed.h"
shintamainjp 0:6537b3b709b6 31
shintamainjp 0:6537b3b709b6 32 /**
shintamainjp 0:6537b3b709b6 33 */
ryood 2:f368dbb9b43c 34 class RotaryEncoder
ryood 2:f368dbb9b43c 35 {
shintamainjp 0:6537b3b709b6 36 public:
shintamainjp 0:6537b3b709b6 37 /**
shintamainjp 0:6537b3b709b6 38 * Create rotary encoder.
shintamainjp 0:6537b3b709b6 39 *
shintamainjp 0:6537b3b709b6 40 * @param pin1_name
shintamainjp 0:6537b3b709b6 41 * @param pin2_name
shintamainjp 0:6537b3b709b6 42 * @param min Minimum value.
shintamainjp 0:6537b3b709b6 43 * @param max Maximum value.
shintamainjp 0:6537b3b709b6 44 * @param val Default value.
shintamainjp 0:6537b3b709b6 45 */
shintamainjp 0:6537b3b709b6 46 RotaryEncoder(PinName pin1_name, PinName pin2_name, int min = 0, int max = 100, int val = 50);
shintamainjp 0:6537b3b709b6 47
shintamainjp 0:6537b3b709b6 48 /**
shintamainjp 0:6537b3b709b6 49 * Dispose.
shintamainjp 0:6537b3b709b6 50 */
shintamainjp 0:6537b3b709b6 51 ~RotaryEncoder();
shintamainjp 0:6537b3b709b6 52
shintamainjp 0:6537b3b709b6 53 /**
shintamainjp 0:6537b3b709b6 54 * Get the minimum value.
shintamainjp 0:6537b3b709b6 55 *
shintamainjp 0:6537b3b709b6 56 * @return The minimum value.
shintamainjp 0:6537b3b709b6 57 */
shintamainjp 0:6537b3b709b6 58 int getMin() const {
shintamainjp 0:6537b3b709b6 59 return min;
shintamainjp 0:6537b3b709b6 60 }
shintamainjp 0:6537b3b709b6 61
shintamainjp 0:6537b3b709b6 62 /**
shintamainjp 0:6537b3b709b6 63 * Get the maximum value.
shintamainjp 0:6537b3b709b6 64 *
shintamainjp 0:6537b3b709b6 65 * @return The maximum value.
shintamainjp 0:6537b3b709b6 66 */
shintamainjp 0:6537b3b709b6 67 int getMax() const {
shintamainjp 0:6537b3b709b6 68 return max;
shintamainjp 0:6537b3b709b6 69 }
shintamainjp 0:6537b3b709b6 70
shintamainjp 0:6537b3b709b6 71 /**
shintamainjp 0:6537b3b709b6 72 * Get the value.
shintamainjp 0:6537b3b709b6 73 *
ryood 4:7a50a5d3682c 74 * @return The value.
shintamainjp 0:6537b3b709b6 75 */
shintamainjp 0:6537b3b709b6 76 int getVal() const {
shintamainjp 0:6537b3b709b6 77 return val;
shintamainjp 0:6537b3b709b6 78 }
shintamainjp 0:6537b3b709b6 79
ryood 2:f368dbb9b43c 80 /**
ryood 4:7a50a5d3682c 81 * Set the value.
ryood 4:7a50a5d3682c 82 *
ryood 4:7a50a5d3682c 83 * @param The value.
ryood 4:7a50a5d3682c 84 */
ryood 4:7a50a5d3682c 85 void setVal(int _val) {
ryood 4:7a50a5d3682c 86 if (min <= _val && _val <= max) {
ryood 4:7a50a5d3682c 87 val = _val;
ryood 4:7a50a5d3682c 88 }
ryood 4:7a50a5d3682c 89 }
ryood 4:7a50a5d3682c 90
ryood 4:7a50a5d3682c 91 /**
ryood 2:f368dbb9b43c 92 * Set the ticker interval.
ryood 2:f368dbb9b43c 93 *
ryood 2:f368dbb9b43c 94 * @param The interval in microseconds.
ryood 2:f368dbb9b43c 95 */
ryood 5:60c44df48016 96 void setInterval(us_timestamp_t t) {
ryood 5:60c44df48016 97 interval = t;
ryood 5:60c44df48016 98 ticker.attach_us(callback(this, &RotaryEncoder::func_ticker), t);
ryood 5:60c44df48016 99 }
ryood 5:60c44df48016 100
ryood 5:60c44df48016 101 /**
ryood 5:60c44df48016 102 * Get the ticker interval.
ryood 5:60c44df48016 103 *
ryood 5:60c44df48016 104 * @return the ticker interval.
ryood 5:60c44df48016 105 */
ryood 5:60c44df48016 106 us_timestamp_t getInterval() const {
ryood 5:60c44df48016 107 return interval;
ryood 2:f368dbb9b43c 108 }
ryood 2:f368dbb9b43c 109
shintamainjp 0:6537b3b709b6 110 private:
shintamainjp 0:6537b3b709b6 111 DigitalIn pin1;
shintamainjp 0:6537b3b709b6 112 DigitalIn pin2;
shintamainjp 0:6537b3b709b6 113 const int min;
shintamainjp 0:6537b3b709b6 114 const int max;
shintamainjp 0:6537b3b709b6 115 int val;
ryood 6:cfc8f362bce6 116 us_timestamp_t interval;
shintamainjp 0:6537b3b709b6 117 Ticker ticker;
shintamainjp 0:6537b3b709b6 118
ryood 3:6736c3bf48c9 119 uint8_t code;
ryood 3:6736c3bf48c9 120
shintamainjp 0:6537b3b709b6 121 /**
shintamainjp 0:6537b3b709b6 122 * Internal tick function.
shintamainjp 0:6537b3b709b6 123 */
shintamainjp 0:6537b3b709b6 124 void func_ticker();
shintamainjp 0:6537b3b709b6 125 };
shintamainjp 0:6537b3b709b6 126
shintamainjp 0:6537b3b709b6 127 #endif