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.
main.cpp
00001 #include "mbed.h" 00002 #include "TextLCD.h" 00003 00004 Serial pc(SERIAL_TX, SERIAL_RX); 00005 AnalogIn button(A0); // Init button (SELECT, LEFT, UP, DOWN, RIGHT) 00006 // LCD (RS, E, D4, D5, D6, D7); 00007 TextLCD lcd(D8, D9, D4, D5, D6, D7); 00008 PwmOut backlight(D10); // Backlight LCD 00009 DigitalOut led(LED1); 00010 00011 int main() { 00012 00013 // Set backlight period and duty cycle 00014 backlight.period(0.002); 00015 backlight = 1; 00016 00017 00018 lcd.cls(); // Clear LCD 00019 lcd.locate(1,0); // Set locate (1 row, 2 column) 00020 lcd.printf("LCD Key Shield"); 00021 wait(1); 00022 00023 int meas; 00024 00025 while(1) { 00026 led = (led == 1) ? 0 : 1; 00027 00028 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) 00029 00030 lcd.cls(); 00031 lcd.locate(0,0); 00032 lcd.printf("Press button"); 00033 lcd.locate(0,1); 00034 00035 if (meas < 50) { 00036 lcd.printf("BUTTON: Right "); 00037 backlight = 0.5; // Set 50% backlight 00038 } 00039 else if (meas < 210) { 00040 lcd.printf("BUTTON: Up"); 00041 backlight = 1; // Power ON backlight 00042 } 00043 else if (meas < 460){ 00044 lcd.printf("BUTTON: Down"); 00045 backlight = 0; // Power OFF backlight 00046 } 00047 else if (meas < 720){ 00048 lcd.printf("BUTTON: Left"); 00049 } 00050 else if (meas > 950){ 00051 lcd.printf("BUTTON: Select"); 00052 } 00053 pc.printf("BUTTON: %4d\n", meas); 00054 00055 wait(0.1); 00056 } 00057 }
Generated on Wed Jul 13 2022 16:04:34 by 1.7.2