Erster Test der Event-Klasse

Dependencies:   mbed

4AHEL Event Klasse

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?

UserRevisionLine numberNew 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 }