Dr. Pucher
/
4AHEL_STM_Lichtschalter
Erster Test der Event-Klasse
4AHEL Event Klasse
Diff: main.cpp
- Revision:
- 0:518dcb1bc8ad
- Child:
- 1:2dbe3e9c662e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu May 19 10:22:31 2016 +0000 @@ -0,0 +1,81 @@ +/* State Machine Implementierung für einen Lichtschalter + simuliert durch den Rot-Anteil der RGB-Led und dem Taster sw1 + siehe: https://developer.mbed.org/users/fpucher/code/HIM0Board/wiki/STM-Schalter +*/ + +#include "mbed.h" + +PwmOut red(p36); +PwmOut green(p5); +PwmOut blue(p34); +DigitalOut led1(LED1); +DigitalOut led2(LED2); +DigitalOut led3(LED3); +DigitalOut led4(LED4); +DigitalIn sw2(P0_10); +DigitalIn sw3(P0_23); +DigitalIn sw4(P1_16); + +// ---------------------- Event Klasse ------------------------ +class Event +{ + bool _pressed; + InterruptIn _isr; +public: + Event( PinName pin ) : _isr(pin) { + _pressed = false; + _isr.rise(this, &Event::_RisingIsr); + } + + void _RisingIsr() { + if( _isr.read()) + _pressed = true; + } + + bool CheckFlag() { + if( _pressed ) { + _pressed = false; + return true; + } + return false; + } + +}; + +// ----------------------- STM Klasse --------------------------- +class Rgb +{ + PwmOut _red; +public: + Rgb( PinName red ) : _red(red) {} + void LedOn() { + _red = 0; + } + + void Dimm() { + //_red = 0; + for(float i=0.0; i <= 1.0; i+= 0.1) { + _red = i; + wait_ms(200); + } + } + + void LedOff() { + _red = 1; + } +}; +//--------------------------- Hauptprogramm ------------------------ + +Rgb rgb(p36); +Event sw1(P0_15); + +int main() +{ + blue=green=1; + rgb.LedOff(); + while(true) { + if(sw1.CheckFlag()) + rgb.LedOn(); + } +// ... +} \ No newline at end of file