New work version with additional functions

Dependencies:   4DGL-UC ConfigFile MODSERIAL mbed mbos

Fork of CDU_Mbed_35 by Engravity-CDU

Revision:
9:1e117310b481
Parent:
8:422544d24df3
diff -r 422544d24df3 -r 1e117310b481 keyboard2.cpp
--- 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; 
+                    }
             }
         }
     }