replaces CDU_Mbed_26
Dependencies: 4DGL MODSERIAL mbed mbos
Fork of CDU_Mbed_26 by
Diff: keyboard2.cpp
- Revision:
- 9:1e117310b481
- Parent:
- 8:422544d24df3
--- a/keyboard2.cpp Sun Jul 20 16:33:53 2014 +0000 +++ b/keyboard2.cpp Sun Jul 20 18:48:19 2014 +0000 @@ -1,6 +1,6 @@ /* File: keyboard2.cpp W. Braat */ /* Keyboard chip TCA8418 control */ - + #include "mbed.h" #include "MODSERIAL.h" #include "keyboard.h" @@ -29,7 +29,7 @@ //CDU background lighting AnalogIn BGL_POT( p16 ); //background light control potmeter PwmOut BGL_LED( p21 ); //PWM output background lighting - + // ---- added by LvdK : ----------------------------------------------------------- DigitalOut Key_led(LED2); // : LED 2 on Mbed board toggles when CDU key is pressed // -------------------------------------------------------------------------------- @@ -131,13 +131,13 @@ // set KEY_EVENT to wakeup SEND_KEYMESSAGE_TASK : CDU_OS.SetEvent(KEY_EVENT,SEND_KEYMESSAGE_TASK_ID ); } - + void CDU_KB_INT_START() { CDU_KB_INT.mode( PullUp ); //Keyboard chip pulls this line to 0 on a keypress CDU_KB_INT.fall(&SET_KEY_EVENT); //Bind function to handle interrupt } - + void CDU_SET_BGL_INTENSITY( int nVal=255 ) { //This routine must be called 5-10x per second. Manual test to see what is pleasant to see @@ -148,30 +148,37 @@ //nVal = 0 --> switch off backlight //nVal = 100 --> switch on backlight max + static int LightOn = 1; + switch (nVal) { case 0: { //switch off backlighting - BGL_LED.pulsewidth( 0.0 ); + BGL_LED = 0.0 ; + LightOn = 0; break; } case 100: { //switch on backlighting - BGL_LED.pulsewidth( 100.0 ); + BGL_LED = BGL_POT; + LightOn = 1; break; } case 255: { //calculate percentage from potmeter value - if ( BGL_POT < 0.01 ) + if ( LightOn == 1) { - BGL_LED = 0.0; //prevents flickering when low intensity - } - else - { - BGL_LED = BGL_POT; + if ( BGL_POT < 0.01 ) + { + BGL_LED = 0.0; //prevents flickering when low intensity + } + else + { + BGL_LED = BGL_POT; + } } } }