Main.cpp Fahrradleuchte

Dependencies:   mbed

Committer:
RudiNiki
Date:
Mon Jan 25 16:40:23 2016 +0000
Revision:
0:fb288e5361c9
Test Fahrradleuchte

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RudiNiki 0:fb288e5361c9 1
RudiNiki 0:fb288e5361c9 2
RudiNiki 0:fb288e5361c9 3 class BtnEventM0
RudiNiki 0:fb288e5361c9 4 {
RudiNiki 0:fb288e5361c9 5 public:
RudiNiki 0:fb288e5361c9 6 int16_t pressed;
RudiNiki 0:fb288e5361c9 7
RudiNiki 0:fb288e5361c9 8 BtnEventM0(PinName pin) : _isr(pin) {
RudiNiki 0:fb288e5361c9 9 pressed=0;
RudiNiki 0:fb288e5361c9 10 }
RudiNiki 0:fb288e5361c9 11
RudiNiki 0:fb288e5361c9 12 // Ist eine steigende Flanke aufgetreten ?
RudiNiki 0:fb288e5361c9 13 int CheckFlag() {
RudiNiki 0:fb288e5361c9 14 if( pressed ) {
RudiNiki 0:fb288e5361c9 15 pressed=0;
RudiNiki 0:fb288e5361c9 16 return 1;
RudiNiki 0:fb288e5361c9 17 }
RudiNiki 0:fb288e5361c9 18 return 0;
RudiNiki 0:fb288e5361c9 19 }
RudiNiki 0:fb288e5361c9 20
RudiNiki 0:fb288e5361c9 21 // 1..Button is pressed else 0
RudiNiki 0:fb288e5361c9 22 int CheckButton() {
RudiNiki 0:fb288e5361c9 23 return _isr.read();
RudiNiki 0:fb288e5361c9 24 }
RudiNiki 0:fb288e5361c9 25
RudiNiki 0:fb288e5361c9 26 void Init() {
RudiNiki 0:fb288e5361c9 27 _isr.rise(this, &BtnEventM0::RisingISR);
RudiNiki 0:fb288e5361c9 28 }
RudiNiki 0:fb288e5361c9 29
RudiNiki 0:fb288e5361c9 30 void RisingISR() {
RudiNiki 0:fb288e5361c9 31 if( _isr.read() )
RudiNiki 0:fb288e5361c9 32 pressed = 1;
RudiNiki 0:fb288e5361c9 33 }
RudiNiki 0:fb288e5361c9 34 protected:
RudiNiki 0:fb288e5361c9 35 InterruptIn _isr;
RudiNiki 0:fb288e5361c9 36 };
RudiNiki 0:fb288e5361c9 37
RudiNiki 0:fb288e5361c9 38 /*
RudiNiki 0:fb288e5361c9 39 class BtnEventM02 : public BtnEventM0
RudiNiki 0:fb288e5361c9 40 {
RudiNiki 0:fb288e5361c9 41 public:
RudiNiki 0:fb288e5361c9 42 BtnEventM02(PinName pin) : BtnEventM0(pin) {
RudiNiki 0:fb288e5361c9 43 _tm.stop();
RudiNiki 0:fb288e5361c9 44 _tm.reset();
RudiNiki 0:fb288e5361c9 45 _state=1;
RudiNiki 0:fb288e5361c9 46 }
RudiNiki 0:fb288e5361c9 47
RudiNiki 0:fb288e5361c9 48 void Init() {
RudiNiki 0:fb288e5361c9 49 _isr.rise(this, &BtnEventM02::RisingISR);
RudiNiki 0:fb288e5361c9 50 }
RudiNiki 0:fb288e5361c9 51
RudiNiki 0:fb288e5361c9 52 void RisingISR() {
RudiNiki 0:fb288e5361c9 53 if( !_isr.read() )
RudiNiki 0:fb288e5361c9 54 return;
RudiNiki 0:fb288e5361c9 55 pressed = 1;
RudiNiki 0:fb288e5361c9 56 _tm.start();
RudiNiki 0:fb288e5361c9 57 _state = 2;
RudiNiki 0:fb288e5361c9 58 }
RudiNiki 0:fb288e5361c9 59
RudiNiki 0:fb288e5361c9 60 void CheckButton() {
RudiNiki 0:fb288e5361c9 61 if( _state==1 )
RudiNiki 0:fb288e5361c9 62 return;
RudiNiki 0:fb288e5361c9 63 if( _state==2 ) {
RudiNiki 0:fb288e5361c9 64 if( !_isr.read() ) {
RudiNiki 0:fb288e5361c9 65 _state = 1;
RudiNiki 0:fb288e5361c9 66 return;
RudiNiki 0:fb288e5361c9 67 }
RudiNiki 0:fb288e5361c9 68 if( _tm.read_ms()>500 ) {
RudiNiki 0:fb288e5361c9 69 _tm.reset();
RudiNiki 0:fb288e5361c9 70 _state = 3;
RudiNiki 0:fb288e5361c9 71 pressed = 1;
RudiNiki 0:fb288e5361c9 72 }
RudiNiki 0:fb288e5361c9 73 } else if( _state==3 ) {
RudiNiki 0:fb288e5361c9 74 if( !_isr.read() ) {
RudiNiki 0:fb288e5361c9 75 _state = 1;
RudiNiki 0:fb288e5361c9 76 return;
RudiNiki 0:fb288e5361c9 77 }
RudiNiki 0:fb288e5361c9 78 if( _tm.read_ms()>100 ) {
RudiNiki 0:fb288e5361c9 79 _tm.reset();
RudiNiki 0:fb288e5361c9 80 _state = 3;
RudiNiki 0:fb288e5361c9 81 pressed = 1;
RudiNiki 0:fb288e5361c9 82 }
RudiNiki 0:fb288e5361c9 83 }
RudiNiki 0:fb288e5361c9 84 }
RudiNiki 0:fb288e5361c9 85 private:
RudiNiki 0:fb288e5361c9 86 int16_t _state;
RudiNiki 0:fb288e5361c9 87 Timer _tm;
RudiNiki 0:fb288e5361c9 88 };
RudiNiki 0:fb288e5361c9 89 */
RudiNiki 0:fb288e5361c9 90
RudiNiki 0:fb288e5361c9 91 class AnalogInHL : public AnalogIn
RudiNiki 0:fb288e5361c9 92 {
RudiNiki 0:fb288e5361c9 93 public:
RudiNiki 0:fb288e5361c9 94 AnalogInHL(PinName pin) : AnalogIn(pin) { }
RudiNiki 0:fb288e5361c9 95 int Read() {
RudiNiki 0:fb288e5361c9 96 return read_u16()>>6;
RudiNiki 0:fb288e5361c9 97 }
RudiNiki 0:fb288e5361c9 98 };
RudiNiki 0:fb288e5361c9 99
RudiNiki 0:fb288e5361c9 100
RudiNiki 0:fb288e5361c9 101
RudiNiki 0:fb288e5361c9 102
RudiNiki 0:fb288e5361c9 103
RudiNiki 0:fb288e5361c9 104
RudiNiki 0:fb288e5361c9 105
RudiNiki 0:fb288e5361c9 106
RudiNiki 0:fb288e5361c9 107
RudiNiki 0:fb288e5361c9 108
RudiNiki 0:fb288e5361c9 109
RudiNiki 0:fb288e5361c9 110
RudiNiki 0:fb288e5361c9 111
RudiNiki 0:fb288e5361c9 112
RudiNiki 0:fb288e5361c9 113
RudiNiki 0:fb288e5361c9 114
RudiNiki 0:fb288e5361c9 115
RudiNiki 0:fb288e5361c9 116
RudiNiki 0:fb288e5361c9 117
RudiNiki 0:fb288e5361c9 118
RudiNiki 0:fb288e5361c9 119
RudiNiki 0:fb288e5361c9 120
RudiNiki 0:fb288e5361c9 121
RudiNiki 0:fb288e5361c9 122
RudiNiki 0:fb288e5361c9 123
RudiNiki 0:fb288e5361c9 124
RudiNiki 0:fb288e5361c9 125
RudiNiki 0:fb288e5361c9 126
RudiNiki 0:fb288e5361c9 127
RudiNiki 0:fb288e5361c9 128
RudiNiki 0:fb288e5361c9 129
RudiNiki 0:fb288e5361c9 130
RudiNiki 0:fb288e5361c9 131
RudiNiki 0:fb288e5361c9 132
RudiNiki 0:fb288e5361c9 133
RudiNiki 0:fb288e5361c9 134
RudiNiki 0:fb288e5361c9 135
RudiNiki 0:fb288e5361c9 136
RudiNiki 0:fb288e5361c9 137
RudiNiki 0:fb288e5361c9 138
RudiNiki 0:fb288e5361c9 139
RudiNiki 0:fb288e5361c9 140
RudiNiki 0:fb288e5361c9 141
RudiNiki 0:fb288e5361c9 142
RudiNiki 0:fb288e5361c9 143
RudiNiki 0:fb288e5361c9 144
RudiNiki 0:fb288e5361c9 145
RudiNiki 0:fb288e5361c9 146