Demo for button and backlight use with Arduino LCD Keypad Shield (HD44780) and similar 16x2 hardware clones. Press 'Up' or 'Down' button to ON or OFF backlight. Build and test with STM32 Nucleo F411RE.

Dependencies:   TextLCD mbed

Revision:
0:8f6ff5bb5a2d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Dec 23 16:58:19 2015 +0000
@@ -0,0 +1,57 @@
+#include "mbed.h"
+#include "TextLCD.h"
+
+Serial pc(SERIAL_TX, SERIAL_RX); 
+AnalogIn button(A0);    // Init button (SELECT, LEFT, UP, DOWN, RIGHT)
+// LCD (RS, E, D4, D5, D6, D7);
+TextLCD lcd(D8, D9, D4, D5, D6, D7);
+PwmOut backlight(D10);  // Backlight LCD
+DigitalOut led(LED1);
+
+int main() {
+    
+    // Set backlight period and duty cycle 
+    backlight.period(0.002);
+    backlight = 1;
+    
+    
+    lcd.cls();                      // Clear LCD
+    lcd.locate(1,0);                // Set locate (1 row, 2 column)
+    lcd.printf("LCD Key Shield");
+    wait(1);
+    
+    int meas;
+    
+    while(1) {
+        led = (led == 1) ? 0 : 1;
+
+        meas = button.read() * 1000; // Read the analog input value (value from 0.0 to 1.0) and convert to int value (from 0 to 1000)
+        
+        lcd.cls();
+        lcd.locate(0,0);
+        lcd.printf("Press button");
+        lcd.locate(0,1);
+        
+        if (meas < 50) { 
+            lcd.printf("BUTTON: Right ");
+            backlight = 0.5;        // Set 50% backlight 
+        }
+        else if (meas < 210) { 
+            lcd.printf("BUTTON: Up");
+            backlight = 1;          // Power ON backlight
+        } 
+        else if (meas < 460){ 
+            lcd.printf("BUTTON: Down");
+            backlight = 0;          // Power OFF backlight
+        } 
+        else if (meas < 720){ 
+            lcd.printf("BUTTON: Left"); 
+        } 
+        else if (meas > 950){ 
+            lcd.printf("BUTTON: Select");
+        }
+        pc.printf("BUTTON: %4d\n", meas);
+        
+        wait(0.1);
+    }
+}
\ No newline at end of file