Arduino 16x2 LCD Keypad Shield + Nucleo-F030R8 controlling PWM LED with LCD menu

Dependencies:   TextLCD mbed

Fork of Nucleo_LCD_Keypad_Shield by Sergey Frolov

Committer:
werwolf_lg
Date:
Wed Dec 23 16:58:19 2015 +0000
Revision:
0:8f6ff5bb5a2d
Child:
1:fbe0e730a150
First version demo for Arduino LCD Keypad Shield and STM32 Nucleo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
werwolf_lg 0:8f6ff5bb5a2d 1 #include "mbed.h"
werwolf_lg 0:8f6ff5bb5a2d 2 #include "TextLCD.h"
werwolf_lg 0:8f6ff5bb5a2d 3
werwolf_lg 0:8f6ff5bb5a2d 4 Serial pc(SERIAL_TX, SERIAL_RX);
werwolf_lg 0:8f6ff5bb5a2d 5 AnalogIn button(A0); // Init button (SELECT, LEFT, UP, DOWN, RIGHT)
werwolf_lg 0:8f6ff5bb5a2d 6 // LCD (RS, E, D4, D5, D6, D7);
werwolf_lg 0:8f6ff5bb5a2d 7 TextLCD lcd(D8, D9, D4, D5, D6, D7);
werwolf_lg 0:8f6ff5bb5a2d 8 PwmOut backlight(D10); // Backlight LCD
werwolf_lg 0:8f6ff5bb5a2d 9 DigitalOut led(LED1);
werwolf_lg 0:8f6ff5bb5a2d 10
werwolf_lg 0:8f6ff5bb5a2d 11 int main() {
werwolf_lg 0:8f6ff5bb5a2d 12
werwolf_lg 0:8f6ff5bb5a2d 13 // Set backlight period and duty cycle
werwolf_lg 0:8f6ff5bb5a2d 14 backlight.period(0.002);
werwolf_lg 0:8f6ff5bb5a2d 15 backlight = 1;
werwolf_lg 0:8f6ff5bb5a2d 16
werwolf_lg 0:8f6ff5bb5a2d 17
werwolf_lg 0:8f6ff5bb5a2d 18 lcd.cls(); // Clear LCD
werwolf_lg 0:8f6ff5bb5a2d 19 lcd.locate(1,0); // Set locate (1 row, 2 column)
werwolf_lg 0:8f6ff5bb5a2d 20 lcd.printf("LCD Key Shield");
werwolf_lg 0:8f6ff5bb5a2d 21 wait(1);
werwolf_lg 0:8f6ff5bb5a2d 22
werwolf_lg 0:8f6ff5bb5a2d 23 int meas;
werwolf_lg 0:8f6ff5bb5a2d 24
werwolf_lg 0:8f6ff5bb5a2d 25 while(1) {
werwolf_lg 0:8f6ff5bb5a2d 26 led = (led == 1) ? 0 : 1;
werwolf_lg 0:8f6ff5bb5a2d 27
werwolf_lg 0:8f6ff5bb5a2d 28 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)
werwolf_lg 0:8f6ff5bb5a2d 29
werwolf_lg 0:8f6ff5bb5a2d 30 lcd.cls();
werwolf_lg 0:8f6ff5bb5a2d 31 lcd.locate(0,0);
werwolf_lg 0:8f6ff5bb5a2d 32 lcd.printf("Press button");
werwolf_lg 0:8f6ff5bb5a2d 33 lcd.locate(0,1);
werwolf_lg 0:8f6ff5bb5a2d 34
werwolf_lg 0:8f6ff5bb5a2d 35 if (meas < 50) {
werwolf_lg 0:8f6ff5bb5a2d 36 lcd.printf("BUTTON: Right ");
werwolf_lg 0:8f6ff5bb5a2d 37 backlight = 0.5; // Set 50% backlight
werwolf_lg 0:8f6ff5bb5a2d 38 }
werwolf_lg 0:8f6ff5bb5a2d 39 else if (meas < 210) {
werwolf_lg 0:8f6ff5bb5a2d 40 lcd.printf("BUTTON: Up");
werwolf_lg 0:8f6ff5bb5a2d 41 backlight = 1; // Power ON backlight
werwolf_lg 0:8f6ff5bb5a2d 42 }
werwolf_lg 0:8f6ff5bb5a2d 43 else if (meas < 460){
werwolf_lg 0:8f6ff5bb5a2d 44 lcd.printf("BUTTON: Down");
werwolf_lg 0:8f6ff5bb5a2d 45 backlight = 0; // Power OFF backlight
werwolf_lg 0:8f6ff5bb5a2d 46 }
werwolf_lg 0:8f6ff5bb5a2d 47 else if (meas < 720){
werwolf_lg 0:8f6ff5bb5a2d 48 lcd.printf("BUTTON: Left");
werwolf_lg 0:8f6ff5bb5a2d 49 }
werwolf_lg 0:8f6ff5bb5a2d 50 else if (meas > 950){
werwolf_lg 0:8f6ff5bb5a2d 51 lcd.printf("BUTTON: Select");
werwolf_lg 0:8f6ff5bb5a2d 52 }
werwolf_lg 0:8f6ff5bb5a2d 53 pc.printf("BUTTON: %4d\n", meas);
werwolf_lg 0:8f6ff5bb5a2d 54
werwolf_lg 0:8f6ff5bb5a2d 55 wait(0.1);
werwolf_lg 0:8f6ff5bb5a2d 56 }
werwolf_lg 0:8f6ff5bb5a2d 57 }