ampel2

Dependencies:   mbed

Committer:
trivla
Date:
Mon Mar 16 15:27:20 2015 +0000
Revision:
0:adf5179f29bb
ampel2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
trivla 0:adf5179f29bb 1 class BtnEventM0
trivla 0:adf5179f29bb 2 {
trivla 0:adf5179f29bb 3 public:
trivla 0:adf5179f29bb 4 int16_t pressed;
trivla 0:adf5179f29bb 5
trivla 0:adf5179f29bb 6 BtnEventM0(PinName pin) : _isr(pin) {
trivla 0:adf5179f29bb 7 pressed=0;
trivla 0:adf5179f29bb 8 }
trivla 0:adf5179f29bb 9
trivla 0:adf5179f29bb 10 // Ist eine steigende Flanke aufgetreten ?
trivla 0:adf5179f29bb 11 int CheckFlag() {
trivla 0:adf5179f29bb 12 if( pressed ) {
trivla 0:adf5179f29bb 13 pressed=0;
trivla 0:adf5179f29bb 14 return 1;
trivla 0:adf5179f29bb 15 }
trivla 0:adf5179f29bb 16 return 0;
trivla 0:adf5179f29bb 17 }
trivla 0:adf5179f29bb 18
trivla 0:adf5179f29bb 19 // 1..Button is pressed else 0
trivla 0:adf5179f29bb 20 int CheckButton() {
trivla 0:adf5179f29bb 21 return _isr.read();
trivla 0:adf5179f29bb 22 }
trivla 0:adf5179f29bb 23
trivla 0:adf5179f29bb 24 void Init() {
trivla 0:adf5179f29bb 25 _isr.rise(this, &BtnEventM0::RisingISR);
trivla 0:adf5179f29bb 26 }
trivla 0:adf5179f29bb 27
trivla 0:adf5179f29bb 28 void RisingISR() {
trivla 0:adf5179f29bb 29 if( _isr.read() )
trivla 0:adf5179f29bb 30 pressed = 1;
trivla 0:adf5179f29bb 31 }
trivla 0:adf5179f29bb 32 protected:
trivla 0:adf5179f29bb 33 InterruptIn _isr;
trivla 0:adf5179f29bb 34 };
trivla 0:adf5179f29bb 35
trivla 0:adf5179f29bb 36 /*
trivla 0:adf5179f29bb 37 class BtnEventM02 : public BtnEventM0
trivla 0:adf5179f29bb 38 {
trivla 0:adf5179f29bb 39 public:
trivla 0:adf5179f29bb 40 BtnEventM02(PinName pin) : BtnEventM0(pin) {
trivla 0:adf5179f29bb 41 _tm.stop();
trivla 0:adf5179f29bb 42 _tm.reset();
trivla 0:adf5179f29bb 43 _state=1;
trivla 0:adf5179f29bb 44 }
trivla 0:adf5179f29bb 45
trivla 0:adf5179f29bb 46 void Init() {
trivla 0:adf5179f29bb 47 _isr.rise(this, &BtnEventM02::RisingISR);
trivla 0:adf5179f29bb 48 }
trivla 0:adf5179f29bb 49
trivla 0:adf5179f29bb 50 void RisingISR() {
trivla 0:adf5179f29bb 51 if( !_isr.read() )
trivla 0:adf5179f29bb 52 return;
trivla 0:adf5179f29bb 53 pressed = 1;
trivla 0:adf5179f29bb 54 _tm.start();
trivla 0:adf5179f29bb 55 _state = 2;
trivla 0:adf5179f29bb 56 }
trivla 0:adf5179f29bb 57
trivla 0:adf5179f29bb 58 void CheckButton() {
trivla 0:adf5179f29bb 59 if( _state==1 )
trivla 0:adf5179f29bb 60 return;
trivla 0:adf5179f29bb 61 if( _state==2 ) {
trivla 0:adf5179f29bb 62 if( !_isr.read() ) {
trivla 0:adf5179f29bb 63 _state = 1;
trivla 0:adf5179f29bb 64 return;
trivla 0:adf5179f29bb 65 }
trivla 0:adf5179f29bb 66 if( _tm.read_ms()>500 ) {
trivla 0:adf5179f29bb 67 _tm.reset();
trivla 0:adf5179f29bb 68 _state = 3;
trivla 0:adf5179f29bb 69 pressed = 1;
trivla 0:adf5179f29bb 70 }
trivla 0:adf5179f29bb 71 } else if( _state==3 ) {
trivla 0:adf5179f29bb 72 if( !_isr.read() ) {
trivla 0:adf5179f29bb 73 _state = 1;
trivla 0:adf5179f29bb 74 return;
trivla 0:adf5179f29bb 75 }
trivla 0:adf5179f29bb 76 if( _tm.read_ms()>100 ) {
trivla 0:adf5179f29bb 77 _tm.reset();
trivla 0:adf5179f29bb 78 _state = 3;
trivla 0:adf5179f29bb 79 pressed = 1;
trivla 0:adf5179f29bb 80 }
trivla 0:adf5179f29bb 81 }
trivla 0:adf5179f29bb 82 }
trivla 0:adf5179f29bb 83 private:
trivla 0:adf5179f29bb 84 int16_t _state;
trivla 0:adf5179f29bb 85 Timer _tm;
trivla 0:adf5179f29bb 86 };
trivla 0:adf5179f29bb 87 */
trivla 0:adf5179f29bb 88
trivla 0:adf5179f29bb 89 class AnalogInHL : public AnalogIn
trivla 0:adf5179f29bb 90 {
trivla 0:adf5179f29bb 91 public:
trivla 0:adf5179f29bb 92 AnalogInHL(PinName pin) : AnalogIn(pin) { }
trivla 0:adf5179f29bb 93 int Read() {
trivla 0:adf5179f29bb 94 return read_u16()>>6;
trivla 0:adf5179f29bb 95 }
trivla 0:adf5179f29bb 96 };