Dr. Pucher
/
4AHEL_STM_Lichtschalter
Erster Test der Event-Klasse
4AHEL Event Klasse
main.cpp@0:518dcb1bc8ad, 2016-05-19 (annotated)
- Committer:
- bulmecisco
- Date:
- Thu May 19 10:22:31 2016 +0000
- Revision:
- 0:518dcb1bc8ad
- Child:
- 1:2dbe3e9c662e
Erster Test der Event-Klasse
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bulmecisco | 0:518dcb1bc8ad | 1 | /* State Machine Implementierung für einen Lichtschalter |
bulmecisco | 0:518dcb1bc8ad | 2 | simuliert durch den Rot-Anteil der RGB-Led und dem Taster sw1 |
bulmecisco | 0:518dcb1bc8ad | 3 | siehe: https://developer.mbed.org/users/fpucher/code/HIM0Board/wiki/STM-Schalter |
bulmecisco | 0:518dcb1bc8ad | 4 | */ |
bulmecisco | 0:518dcb1bc8ad | 5 | |
bulmecisco | 0:518dcb1bc8ad | 6 | #include "mbed.h" |
bulmecisco | 0:518dcb1bc8ad | 7 | |
bulmecisco | 0:518dcb1bc8ad | 8 | PwmOut red(p36); |
bulmecisco | 0:518dcb1bc8ad | 9 | PwmOut green(p5); |
bulmecisco | 0:518dcb1bc8ad | 10 | PwmOut blue(p34); |
bulmecisco | 0:518dcb1bc8ad | 11 | DigitalOut led1(LED1); |
bulmecisco | 0:518dcb1bc8ad | 12 | DigitalOut led2(LED2); |
bulmecisco | 0:518dcb1bc8ad | 13 | DigitalOut led3(LED3); |
bulmecisco | 0:518dcb1bc8ad | 14 | DigitalOut led4(LED4); |
bulmecisco | 0:518dcb1bc8ad | 15 | DigitalIn sw2(P0_10); |
bulmecisco | 0:518dcb1bc8ad | 16 | DigitalIn sw3(P0_23); |
bulmecisco | 0:518dcb1bc8ad | 17 | DigitalIn sw4(P1_16); |
bulmecisco | 0:518dcb1bc8ad | 18 | |
bulmecisco | 0:518dcb1bc8ad | 19 | // ---------------------- Event Klasse ------------------------ |
bulmecisco | 0:518dcb1bc8ad | 20 | class Event |
bulmecisco | 0:518dcb1bc8ad | 21 | { |
bulmecisco | 0:518dcb1bc8ad | 22 | bool _pressed; |
bulmecisco | 0:518dcb1bc8ad | 23 | InterruptIn _isr; |
bulmecisco | 0:518dcb1bc8ad | 24 | public: |
bulmecisco | 0:518dcb1bc8ad | 25 | Event( PinName pin ) : _isr(pin) { |
bulmecisco | 0:518dcb1bc8ad | 26 | _pressed = false; |
bulmecisco | 0:518dcb1bc8ad | 27 | _isr.rise(this, &Event::_RisingIsr); |
bulmecisco | 0:518dcb1bc8ad | 28 | } |
bulmecisco | 0:518dcb1bc8ad | 29 | |
bulmecisco | 0:518dcb1bc8ad | 30 | void _RisingIsr() { |
bulmecisco | 0:518dcb1bc8ad | 31 | if( _isr.read()) |
bulmecisco | 0:518dcb1bc8ad | 32 | _pressed = true; |
bulmecisco | 0:518dcb1bc8ad | 33 | } |
bulmecisco | 0:518dcb1bc8ad | 34 | |
bulmecisco | 0:518dcb1bc8ad | 35 | bool CheckFlag() { |
bulmecisco | 0:518dcb1bc8ad | 36 | if( _pressed ) { |
bulmecisco | 0:518dcb1bc8ad | 37 | _pressed = false; |
bulmecisco | 0:518dcb1bc8ad | 38 | return true; |
bulmecisco | 0:518dcb1bc8ad | 39 | } |
bulmecisco | 0:518dcb1bc8ad | 40 | return false; |
bulmecisco | 0:518dcb1bc8ad | 41 | } |
bulmecisco | 0:518dcb1bc8ad | 42 | |
bulmecisco | 0:518dcb1bc8ad | 43 | }; |
bulmecisco | 0:518dcb1bc8ad | 44 | |
bulmecisco | 0:518dcb1bc8ad | 45 | // ----------------------- STM Klasse --------------------------- |
bulmecisco | 0:518dcb1bc8ad | 46 | class Rgb |
bulmecisco | 0:518dcb1bc8ad | 47 | { |
bulmecisco | 0:518dcb1bc8ad | 48 | PwmOut _red; |
bulmecisco | 0:518dcb1bc8ad | 49 | public: |
bulmecisco | 0:518dcb1bc8ad | 50 | Rgb( PinName red ) : _red(red) {} |
bulmecisco | 0:518dcb1bc8ad | 51 | void LedOn() { |
bulmecisco | 0:518dcb1bc8ad | 52 | _red = 0; |
bulmecisco | 0:518dcb1bc8ad | 53 | } |
bulmecisco | 0:518dcb1bc8ad | 54 | |
bulmecisco | 0:518dcb1bc8ad | 55 | void Dimm() { |
bulmecisco | 0:518dcb1bc8ad | 56 | //_red = 0; |
bulmecisco | 0:518dcb1bc8ad | 57 | for(float i=0.0; i <= 1.0; i+= 0.1) { |
bulmecisco | 0:518dcb1bc8ad | 58 | _red = i; |
bulmecisco | 0:518dcb1bc8ad | 59 | wait_ms(200); |
bulmecisco | 0:518dcb1bc8ad | 60 | } |
bulmecisco | 0:518dcb1bc8ad | 61 | } |
bulmecisco | 0:518dcb1bc8ad | 62 | |
bulmecisco | 0:518dcb1bc8ad | 63 | void LedOff() { |
bulmecisco | 0:518dcb1bc8ad | 64 | _red = 1; |
bulmecisco | 0:518dcb1bc8ad | 65 | } |
bulmecisco | 0:518dcb1bc8ad | 66 | }; |
bulmecisco | 0:518dcb1bc8ad | 67 | //--------------------------- Hauptprogramm ------------------------ |
bulmecisco | 0:518dcb1bc8ad | 68 | |
bulmecisco | 0:518dcb1bc8ad | 69 | Rgb rgb(p36); |
bulmecisco | 0:518dcb1bc8ad | 70 | Event sw1(P0_15); |
bulmecisco | 0:518dcb1bc8ad | 71 | |
bulmecisco | 0:518dcb1bc8ad | 72 | int main() |
bulmecisco | 0:518dcb1bc8ad | 73 | { |
bulmecisco | 0:518dcb1bc8ad | 74 | blue=green=1; |
bulmecisco | 0:518dcb1bc8ad | 75 | rgb.LedOff(); |
bulmecisco | 0:518dcb1bc8ad | 76 | while(true) { |
bulmecisco | 0:518dcb1bc8ad | 77 | if(sw1.CheckFlag()) |
bulmecisco | 0:518dcb1bc8ad | 78 | rgb.LedOn(); |
bulmecisco | 0:518dcb1bc8ad | 79 | } |
bulmecisco | 0:518dcb1bc8ad | 80 | // ... |
bulmecisco | 0:518dcb1bc8ad | 81 | } |