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.
Fork of ProcVisDemo by
BtnEventM0.h
00001 00002 // V4.0 00003 00004 class BtnEventM0 { 00005 public: 00006 int16_t pressed; 00007 00008 BtnEventM0(PinName pin) : _isr(pin) 00009 { pressed=0; } 00010 00011 // Ist eine steigende Flanke aufgetreten ? 00012 int CheckFlag(); 00013 00014 // 1..Button is pressed else 0 00015 int CheckButton() 00016 { return _isr.read(); } 00017 00018 void Init(); 00019 // { _isr.rise(this,&BtnEventM0::RisingISR); } 00020 00021 void RisingISR(); 00022 00023 protected: 00024 InterruptIn _isr; 00025 }; 00026 00027 void BtnEventM0::Init() 00028 { _isr.rise(this,&BtnEventM0::RisingISR); } 00029 00030 void BtnEventM0::RisingISR() 00031 { 00032 if( _isr.read() ) 00033 pressed = 1; 00034 } 00035 00036 int BtnEventM0::CheckFlag() 00037 { 00038 if( pressed ) 00039 { pressed=0; return 1; } 00040 return 0; 00041 } 00042 00043 00044 00045 00046 00047 /* 00048 class BtnEventM02 : public BtnEventM0 00049 { 00050 public: 00051 BtnEventM02(PinName pin) : BtnEventM0(pin) { 00052 _tm.stop(); 00053 _tm.reset(); 00054 _state=1; 00055 } 00056 00057 void Init() { 00058 _isr.rise(this, &BtnEventM02::RisingISR); 00059 } 00060 00061 void RisingISR() { 00062 if( !_isr.read() ) 00063 return; 00064 pressed = 1; 00065 _tm.start(); 00066 _state = 2; 00067 } 00068 00069 void CheckButton() { 00070 if( _state==1 ) 00071 return; 00072 if( _state==2 ) { 00073 if( !_isr.read() ) { 00074 _state = 1; 00075 return; 00076 } 00077 if( _tm.read_ms()>500 ) { 00078 _tm.reset(); 00079 _state = 3; 00080 pressed = 1; 00081 } 00082 } else if( _state==3 ) { 00083 if( !_isr.read() ) { 00084 _state = 1; 00085 return; 00086 } 00087 if( _tm.read_ms()>100 ) { 00088 _tm.reset(); 00089 _state = 3; 00090 pressed = 1; 00091 } 00092 } 00093 } 00094 private: 00095 int16_t _state; 00096 Timer _tm; 00097 }; 00098 */ 00099 00100 class AnalogInHL : public AnalogIn 00101 { 00102 public: 00103 AnalogInHL(PinName pin) : AnalogIn(pin) { } 00104 int Read() { 00105 return read_u16()>>6; 00106 } 00107 }; 00108 00109 class BtnEventM0S { 00110 public: 00111 BtnEventM0S(PinName pin) : _btn(pin) { } 00112 00113 void Init() {} 00114 00115 // Ist eine steigende Flanke aufgetreten ? 00116 int CheckFlag() 00117 { 00118 if( _btn ) 00119 { wait_ms(100); return 1; } 00120 else 00121 return 0; 00122 } 00123 00124 protected: 00125 DigitalIn _btn; 00126 }; 00127 00128 00129 00130 00131 00132 00133 00134 00135 00136 00137 00138 00139 00140 00141 00142 00143 00144 00145 00146 00147 00148 00149 00150 00151 00152 00153 00154 00155 00156 00157 00158 00159 00160 00161 00162 00163 00164 00165 00166 00167 00168 00169 00170 00171 00172 00173 00174
Generated on Sat Jul 30 2022 21:10:34 by
