Demonstrates the usage of the ButtonEventM0-Class

Dependencies:   mbed

Dependents:   LedshifterMask

Committer:
hollegha2
Date:
Wed Feb 01 07:20:51 2017 +0000
Revision:
10:6495a89d66ed
Parent:
9:813c361e38fc
c45

Who changed what in which revision?

UserRevisionLine numberNew 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