michael hollegha
/
ButtonEventDemo
Demonstrates the usage of the ButtonEventM0-Class
BtnEventM0.h@10:6495a89d66ed, 2017-02-01 (annotated)
- Committer:
- hollegha2
- Date:
- Wed Feb 01 07:20:51 2017 +0000
- Revision:
- 10:6495a89d66ed
- Parent:
- 9:813c361e38fc
c45
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hollegha2 | 9:813c361e38fc | 1 | |
hollegha2 | 10:6495a89d66ed | 2 | // V4.0 |
hollegha2 | 8:e2f768aad0a6 | 3 | |
hollegha2 | 8:e2f768aad0a6 | 4 | class BtnEventM0 { |
hollegha2 | 8:e2f768aad0a6 | 5 | public: |
hollegha2 | 8:e2f768aad0a6 | 6 | int16_t pressed; |
hollegha2 | 8:e2f768aad0a6 | 7 | |
hollegha2 | 8:e2f768aad0a6 | 8 | BtnEventM0(PinName pin) : _isr(pin) |
hollegha2 | 8:e2f768aad0a6 | 9 | { pressed=0; } |
hollegha2 | 8:e2f768aad0a6 | 10 | |
hollegha2 | 8:e2f768aad0a6 | 11 | // Ist eine steigende Flanke aufgetreten ? |
hollegha2 | 8:e2f768aad0a6 | 12 | int CheckFlag(); |
hollegha2 | 8:e2f768aad0a6 | 13 | |
hollegha2 | 8:e2f768aad0a6 | 14 | // 1..Button is pressed else 0 |
hollegha2 | 8:e2f768aad0a6 | 15 | int CheckButton() |
hollegha2 | 8:e2f768aad0a6 | 16 | { return _isr.read(); } |
hollegha2 | 8:e2f768aad0a6 | 17 | |
hollegha2 | 8:e2f768aad0a6 | 18 | void Init(); |
hollegha2 | 8:e2f768aad0a6 | 19 | // { _isr.rise(this,&BtnEventM0::RisingISR); } |
hollegha2 | 8:e2f768aad0a6 | 20 | |
hollegha2 | 8:e2f768aad0a6 | 21 | void RisingISR(); |
hollegha2 | 8:e2f768aad0a6 | 22 | |
hollegha2 | 8:e2f768aad0a6 | 23 | protected: |
hollegha2 | 8:e2f768aad0a6 | 24 | InterruptIn _isr; |
hollegha2 | 8:e2f768aad0a6 | 25 | }; |
hollegha2 | 8:e2f768aad0a6 | 26 | |
hollegha2 | 8:e2f768aad0a6 | 27 | void BtnEventM0::Init() |
hollegha2 | 8:e2f768aad0a6 | 28 | { _isr.rise(this,&BtnEventM0::RisingISR); } |
hollegha2 | 8:e2f768aad0a6 | 29 | |
hollegha2 | 8:e2f768aad0a6 | 30 | void BtnEventM0::RisingISR() |
hollegha2 | 8:e2f768aad0a6 | 31 | { |
hollegha2 | 8:e2f768aad0a6 | 32 | if( _isr.read() ) |
hollegha2 | 8:e2f768aad0a6 | 33 | pressed = 1; |
hollegha2 | 8:e2f768aad0a6 | 34 | } |
hollegha2 | 8:e2f768aad0a6 | 35 | |
hollegha2 | 8:e2f768aad0a6 | 36 | int BtnEventM0::CheckFlag() |
hollegha2 | 8:e2f768aad0a6 | 37 | { |
hollegha2 | 8:e2f768aad0a6 | 38 | if( pressed ) |
hollegha2 | 8:e2f768aad0a6 | 39 | { pressed=0; return 1; } |
hollegha2 | 8:e2f768aad0a6 | 40 | return 0; |
hollegha2 | 8:e2f768aad0a6 | 41 | } |
hollegha2 | 0:35d70ff5c12e | 42 | |
hollegha2 | 0:35d70ff5c12e | 43 | |
hollegha2 | 0:35d70ff5c12e | 44 | |
hollegha2 | 0:35d70ff5c12e | 45 | |
hollegha2 | 0:35d70ff5c12e | 46 | |
hollegha2 | 0:35d70ff5c12e | 47 | /* |
hollegha2 | 0:35d70ff5c12e | 48 | class BtnEventM02 : public BtnEventM0 |
hollegha2 | 0:35d70ff5c12e | 49 | { |
hollegha2 | 0:35d70ff5c12e | 50 | public: |
hollegha2 | 0:35d70ff5c12e | 51 | BtnEventM02(PinName pin) : BtnEventM0(pin) { |
hollegha2 | 0:35d70ff5c12e | 52 | _tm.stop(); |
hollegha2 | 0:35d70ff5c12e | 53 | _tm.reset(); |
hollegha2 | 0:35d70ff5c12e | 54 | _state=1; |
hollegha2 | 0:35d70ff5c12e | 55 | } |
hollegha2 | 0:35d70ff5c12e | 56 | |
hollegha2 | 0:35d70ff5c12e | 57 | void Init() { |
hollegha2 | 0:35d70ff5c12e | 58 | _isr.rise(this, &BtnEventM02::RisingISR); |
hollegha2 | 0:35d70ff5c12e | 59 | } |
hollegha2 | 0:35d70ff5c12e | 60 | |
hollegha2 | 0:35d70ff5c12e | 61 | void RisingISR() { |
hollegha2 | 0:35d70ff5c12e | 62 | if( !_isr.read() ) |
hollegha2 | 0:35d70ff5c12e | 63 | return; |
hollegha2 | 0:35d70ff5c12e | 64 | pressed = 1; |
hollegha2 | 0:35d70ff5c12e | 65 | _tm.start(); |
hollegha2 | 0:35d70ff5c12e | 66 | _state = 2; |
hollegha2 | 0:35d70ff5c12e | 67 | } |
hollegha2 | 0:35d70ff5c12e | 68 | |
hollegha2 | 0:35d70ff5c12e | 69 | void CheckButton() { |
hollegha2 | 0:35d70ff5c12e | 70 | if( _state==1 ) |
hollegha2 | 0:35d70ff5c12e | 71 | return; |
hollegha2 | 0:35d70ff5c12e | 72 | if( _state==2 ) { |
hollegha2 | 0:35d70ff5c12e | 73 | if( !_isr.read() ) { |
hollegha2 | 0:35d70ff5c12e | 74 | _state = 1; |
hollegha2 | 0:35d70ff5c12e | 75 | return; |
hollegha2 | 0:35d70ff5c12e | 76 | } |
hollegha2 | 0:35d70ff5c12e | 77 | if( _tm.read_ms()>500 ) { |
hollegha2 | 0:35d70ff5c12e | 78 | _tm.reset(); |
hollegha2 | 0:35d70ff5c12e | 79 | _state = 3; |
hollegha2 | 0:35d70ff5c12e | 80 | pressed = 1; |
hollegha2 | 0:35d70ff5c12e | 81 | } |
hollegha2 | 0:35d70ff5c12e | 82 | } else if( _state==3 ) { |
hollegha2 | 0:35d70ff5c12e | 83 | if( !_isr.read() ) { |
hollegha2 | 0:35d70ff5c12e | 84 | _state = 1; |
hollegha2 | 0:35d70ff5c12e | 85 | return; |
hollegha2 | 0:35d70ff5c12e | 86 | } |
hollegha2 | 0:35d70ff5c12e | 87 | if( _tm.read_ms()>100 ) { |
hollegha2 | 0:35d70ff5c12e | 88 | _tm.reset(); |
hollegha2 | 0:35d70ff5c12e | 89 | _state = 3; |
hollegha2 | 0:35d70ff5c12e | 90 | pressed = 1; |
hollegha2 | 0:35d70ff5c12e | 91 | } |
hollegha2 | 0:35d70ff5c12e | 92 | } |
hollegha2 | 0:35d70ff5c12e | 93 | } |
hollegha2 | 0:35d70ff5c12e | 94 | private: |
hollegha2 | 0:35d70ff5c12e | 95 | int16_t _state; |
hollegha2 | 0:35d70ff5c12e | 96 | Timer _tm; |
hollegha2 | 0:35d70ff5c12e | 97 | }; |
hollegha2 | 0:35d70ff5c12e | 98 | */ |
hollegha2 | 0:35d70ff5c12e | 99 | |
hollegha2 | 7:d6677cae0add | 100 | class AnalogInHL : public AnalogIn |
hollegha2 | 7:d6677cae0add | 101 | { |
hollegha2 | 7:d6677cae0add | 102 | public: |
hollegha2 | 7:d6677cae0add | 103 | AnalogInHL(PinName pin) : AnalogIn(pin) { } |
hollegha2 | 7:d6677cae0add | 104 | int Read() { |
hollegha2 | 7:d6677cae0add | 105 | return read_u16()>>6; |
hollegha2 | 7:d6677cae0add | 106 | } |
hollegha2 | 1:6e9e9eafb91a | 107 | }; |
hollegha2 | 0:35d70ff5c12e | 108 | |
hollegha2 | 8:e2f768aad0a6 | 109 | class BtnEventM0S { |
hollegha2 | 8:e2f768aad0a6 | 110 | public: |
hollegha2 | 8:e2f768aad0a6 | 111 | BtnEventM0S(PinName pin) : _btn(pin) { } |
hollegha2 | 8:e2f768aad0a6 | 112 | |
hollegha2 | 8:e2f768aad0a6 | 113 | void Init() {} |
hollegha2 | 8:e2f768aad0a6 | 114 | |
hollegha2 | 8:e2f768aad0a6 | 115 | // Ist eine steigende Flanke aufgetreten ? |
hollegha2 | 8:e2f768aad0a6 | 116 | int CheckFlag() |
hollegha2 | 8:e2f768aad0a6 | 117 | { |
hollegha2 | 8:e2f768aad0a6 | 118 | if( _btn ) |
hollegha2 | 8:e2f768aad0a6 | 119 | { wait_ms(100); return 1; } |
hollegha2 | 8:e2f768aad0a6 | 120 | else |
hollegha2 | 8:e2f768aad0a6 | 121 | return 0; |
hollegha2 | 8:e2f768aad0a6 | 122 | } |
hollegha2 | 8:e2f768aad0a6 | 123 | |
hollegha2 | 8:e2f768aad0a6 | 124 | protected: |
hollegha2 | 8:e2f768aad0a6 | 125 | DigitalIn _btn; |
hollegha2 | 8:e2f768aad0a6 | 126 | }; |
hollegha2 | 0:35d70ff5c12e | 127 | |
hollegha2 | 0:35d70ff5c12e | 128 | |
hollegha2 | 0:35d70ff5c12e | 129 | |
hollegha2 | 0:35d70ff5c12e | 130 | |
hollegha2 | 0:35d70ff5c12e | 131 | |
hollegha2 | 0:35d70ff5c12e | 132 | |
hollegha2 | 0:35d70ff5c12e | 133 | |
hollegha2 | 0:35d70ff5c12e | 134 | |
hollegha2 | 0:35d70ff5c12e | 135 | |
hollegha2 | 0:35d70ff5c12e | 136 | |
hollegha2 | 0:35d70ff5c12e | 137 | |
hollegha2 | 0:35d70ff5c12e | 138 | |
hollegha2 | 0:35d70ff5c12e | 139 | |
hollegha2 | 0:35d70ff5c12e | 140 | |
hollegha2 | 0:35d70ff5c12e | 141 | |
hollegha2 | 0:35d70ff5c12e | 142 | |
hollegha2 | 0:35d70ff5c12e | 143 | |
hollegha2 | 0:35d70ff5c12e | 144 | |
hollegha2 | 0:35d70ff5c12e | 145 | |
hollegha2 | 0:35d70ff5c12e | 146 | |
hollegha2 | 0:35d70ff5c12e | 147 | |
hollegha2 | 0:35d70ff5c12e | 148 | |
hollegha2 | 0:35d70ff5c12e | 149 | |
hollegha2 | 0:35d70ff5c12e | 150 | |
hollegha2 | 0:35d70ff5c12e | 151 | |
hollegha2 | 0:35d70ff5c12e | 152 | |
hollegha2 | 0:35d70ff5c12e | 153 | |
hollegha2 | 0:35d70ff5c12e | 154 | |
hollegha2 | 0:35d70ff5c12e | 155 | |
hollegha2 | 0:35d70ff5c12e | 156 | |
hollegha2 | 0:35d70ff5c12e | 157 | |
hollegha2 | 0:35d70ff5c12e | 158 | |
hollegha2 | 0:35d70ff5c12e | 159 | |
hollegha2 | 0:35d70ff5c12e | 160 | |
hollegha2 | 0:35d70ff5c12e | 161 | |
hollegha2 | 0:35d70ff5c12e | 162 | |
hollegha2 | 0:35d70ff5c12e | 163 | |
hollegha2 | 0:35d70ff5c12e | 164 | |
hollegha2 | 0:35d70ff5c12e | 165 | |
hollegha2 | 0:35d70ff5c12e | 166 | |
hollegha2 | 0:35d70ff5c12e | 167 | |
hollegha2 | 0:35d70ff5c12e | 168 | |
hollegha2 | 1:6e9e9eafb91a | 169 | |
hollegha2 | 1:6e9e9eafb91a | 170 | |
hollegha2 | 1:6e9e9eafb91a | 171 | |
hollegha2 | 3:ec1b36316bb9 | 172 | |
hollegha2 | 6:cc64c2ff26b0 | 173 | |
hollegha2 | 8:e2f768aad0a6 | 174 |