Simple version for outreach using https://os.mbed.com/users/wsteenberg/code/

Dependencies:   mbed LCD_DISCO_F469NI TS_DISCO_F469NI BSP_DISCO_F469NI

Committer:
wsteenberg
Date:
Tue Sep 25 12:38:48 2018 +0000
Revision:
0:ebf3f36f3a64
Child:
1:8574e7a8fcde
DISCO-F469NI_Button_and_Slider_Library v1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wsteenberg 0:ebf3f36f3a64 1 //---------------------------------------------------------------
wsteenberg 0:ebf3f36f3a64 2 //
wsteenberg 0:ebf3f36f3a64 3 // Demo program for
wsteenberg 0:ebf3f36f3a64 4 // F469_Button and Slider library
wsteenberg 0:ebf3f36f3a64 5 //
wsteenberg 0:ebf3f36f3a64 6 //---------------------------------------------------------------
wsteenberg 0:ebf3f36f3a64 7 #include "mbed.h"
wsteenberg 0:ebf3f36f3a64 8 #include "F469_BUTTON.hpp"
wsteenberg 0:ebf3f36f3a64 9 #include "F469_SLIDER.hpp"
wsteenberg 0:ebf3f36f3a64 10
wsteenberg 0:ebf3f36f3a64 11 DigitalOut led_green(LED1);
wsteenberg 0:ebf3f36f3a64 12 DigitalOut led_orange(LED2);
wsteenberg 0:ebf3f36f3a64 13 DigitalOut led_red(LED3);
wsteenberg 0:ebf3f36f3a64 14 DigitalOut led_blue(LED4);
wsteenberg 0:ebf3f36f3a64 15
wsteenberg 0:ebf3f36f3a64 16 TS_DISCO_F469NI ts_;
wsteenberg 0:ebf3f36f3a64 17 LCD_DISCO_F469NI lcd_;
wsteenberg 0:ebf3f36f3a64 18
wsteenberg 0:ebf3f36f3a64 19
wsteenberg 0:ebf3f36f3a64 20 char char_SliderDisplayValue[4]; // String Value to display for the Slider Control value
wsteenberg 0:ebf3f36f3a64 21 uint16_t SliderDisplayValue_; // Variable used to access Slider Control Value in F469SLIDER.cpp
wsteenberg 0:ebf3f36f3a64 22
wsteenberg 0:ebf3f36f3a64 23 int main()
wsteenberg 0:ebf3f36f3a64 24 {
wsteenberg 0:ebf3f36f3a64 25 led_green = 1; // Switch off all LEDs
wsteenberg 0:ebf3f36f3a64 26 led_orange = 1;
wsteenberg 0:ebf3f36f3a64 27 led_red = 1;
wsteenberg 0:ebf3f36f3a64 28 led_blue = 1;
wsteenberg 0:ebf3f36f3a64 29
wsteenberg 0:ebf3f36f3a64 30 lcd_.Clear(LCD_COLOR_WHITE); // Set LCD Background colour
wsteenberg 0:ebf3f36f3a64 31
wsteenberg 0:ebf3f36f3a64 32 Slider sld1(lcd_, ts_, 20, 350, 220, 40, 5, 1, 20,
wsteenberg 0:ebf3f36f3a64 33 LCD_COLOR_BLUE, LCD_COLOR_YELLOW, 1, "Slider1", Font20); // Define sld1 slider
wsteenberg 0:ebf3f36f3a64 34 sld1.Render(); // Draw sld1 Slider
wsteenberg 0:ebf3f36f3a64 35
wsteenberg 0:ebf3f36f3a64 36 Slider Slider2(lcd_, ts_, 300, 350, 300, 40, 50, 1, 100,
wsteenberg 0:ebf3f36f3a64 37 LCD_COLOR_BLUE, LCD_COLOR_YELLOW, 2, "Slider2", Font20); // Define Slider2 slider
wsteenberg 0:ebf3f36f3a64 38 Slider2.Render(); // Draw Slider2 Slider
wsteenberg 0:ebf3f36f3a64 39
wsteenberg 0:ebf3f36f3a64 40 Button btn1(lcd_, ts_, 20, 100, 120, 60,
wsteenberg 0:ebf3f36f3a64 41 LCD_COLOR_BLUE, LCD_COLOR_YELLOW, 1, "BUTTON1", Font20); // Define btn1 button
wsteenberg 0:ebf3f36f3a64 42 btn1.Render(); // Draw btn1 button
wsteenberg 0:ebf3f36f3a64 43
wsteenberg 0:ebf3f36f3a64 44 Button test(lcd_, ts_, 160, 100, 120, 60,
wsteenberg 0:ebf3f36f3a64 45 LCD_COLOR_DARKBLUE, LCD_COLOR_GREEN, 1, "TEST", Font20); // Define test button
wsteenberg 0:ebf3f36f3a64 46 test.Render(); // Draw test button
wsteenberg 0:ebf3f36f3a64 47
wsteenberg 0:ebf3f36f3a64 48 Button show(lcd_, ts_, 300, 100, 120, 60,
wsteenberg 0:ebf3f36f3a64 49 LCD_COLOR_BROWN, LCD_COLOR_GRAY, 1, "SHOW", Font20); // Define hide button
wsteenberg 0:ebf3f36f3a64 50 show.Hide();
wsteenberg 0:ebf3f36f3a64 51
wsteenberg 0:ebf3f36f3a64 52 Button hide(lcd_, ts_, 300, 100, 120, 60,
wsteenberg 0:ebf3f36f3a64 53 LCD_COLOR_BROWN, LCD_COLOR_GRAY, 1, "HIDE", Font20); // Define hide button
wsteenberg 0:ebf3f36f3a64 54 hide.Render(); // Draw hide button
wsteenberg 0:ebf3f36f3a64 55
wsteenberg 0:ebf3f36f3a64 56 Button button3D(lcd_, ts_, 580, 100, 160, 60,
wsteenberg 0:ebf3f36f3a64 57 LCD_COLOR_BLUE, LCD_COLOR_YELLOW, 2, "3D BUTTON", Font20); // Define button3D button
wsteenberg 0:ebf3f36f3a64 58 button3D.Render(); // Draw 3Dbutton button
wsteenberg 0:ebf3f36f3a64 59
wsteenberg 0:ebf3f36f3a64 60
wsteenberg 0:ebf3f36f3a64 61
wsteenberg 0:ebf3f36f3a64 62 lcd_.SetTextColor(LCD_COLOR_BLACK); // Set Text colour to Black
wsteenberg 0:ebf3f36f3a64 63 lcd_.SetFont(&Font20); // Font size 20
wsteenberg 0:ebf3f36f3a64 64 lcd_.DisplayStringAt(5, 5, (uint8_t *)"Button / Slider driver for DISCO_F469", LEFT_MODE); // Display main header text
wsteenberg 0:ebf3f36f3a64 65
wsteenberg 0:ebf3f36f3a64 66 lcd_.SetFont(&Font16); // Font size 16
wsteenberg 0:ebf3f36f3a64 67 lcd_.DisplayStringAt(5, 45, (uint8_t *)"Button example", LEFT_MODE); // Display secondary header text
wsteenberg 0:ebf3f36f3a64 68
wsteenberg 0:ebf3f36f3a64 69
wsteenberg 0:ebf3f36f3a64 70 while (true) // Main program loop
wsteenberg 0:ebf3f36f3a64 71 {
wsteenberg 0:ebf3f36f3a64 72 led_green = 1; // Switch off all LEDs
wsteenberg 0:ebf3f36f3a64 73 led_orange = 1;
wsteenberg 0:ebf3f36f3a64 74 led_red = 1;
wsteenberg 0:ebf3f36f3a64 75 led_blue = 1;
wsteenberg 0:ebf3f36f3a64 76
wsteenberg 0:ebf3f36f3a64 77
wsteenberg 0:ebf3f36f3a64 78
wsteenberg 0:ebf3f36f3a64 79 if (sld1.Moved()) // Check if sld1 Slider was touched and run instructions if true
wsteenberg 0:ebf3f36f3a64 80 {
wsteenberg 0:ebf3f36f3a64 81 led_blue = 0;
wsteenberg 0:ebf3f36f3a64 82 lcd_.SetTextColor(LCD_COLOR_BLACK);
wsteenberg 0:ebf3f36f3a64 83 lcd_.FillRect(85, 265, 80, 40); // Draw border to display Slider Control Value
wsteenberg 0:ebf3f36f3a64 84 lcd_.SetTextColor(LCD_COLOR_WHITE);
wsteenberg 0:ebf3f36f3a64 85 lcd_.FillRect(95, 270, 60, 30); // Draw border to display Slider Control Value
wsteenberg 0:ebf3f36f3a64 86
wsteenberg 0:ebf3f36f3a64 87 sprintf(char_SliderDisplayValue, "%3d", (int) SliderDisplayValue_); // Convert integer to text
wsteenberg 0:ebf3f36f3a64 88 lcd_.SetFont(&Font16); // Set Font size
wsteenberg 0:ebf3f36f3a64 89 lcd_.SetTextColor(LCD_COLOR_BLACK); // Set Font colour
wsteenberg 0:ebf3f36f3a64 90 lcd_.DisplayStringAt(100, 280, (uint8_t *)char_SliderDisplayValue, LEFT_MODE); // Write Slider Control Value to the LCD
wsteenberg 0:ebf3f36f3a64 91
wsteenberg 0:ebf3f36f3a64 92 if (SliderDisplayValue_ < 10) // Slider Control Value decision
wsteenberg 0:ebf3f36f3a64 93 {
wsteenberg 0:ebf3f36f3a64 94 lcd_.DisplayStringAt(60, 330, (uint8_t *)" ", LEFT_MODE); // Overwrite previous text
wsteenberg 0:ebf3f36f3a64 95 lcd_.DisplayStringAt(60, 330, (uint8_t *)"SLIDER1 < 50%", LEFT_MODE); // Write text to LCD
wsteenberg 0:ebf3f36f3a64 96 }
wsteenberg 0:ebf3f36f3a64 97 else if (SliderDisplayValue_ == 10) // Slider Control Value decision
wsteenberg 0:ebf3f36f3a64 98 {
wsteenberg 0:ebf3f36f3a64 99 lcd_.DisplayStringAt(60, 330, (uint8_t *)" ", LEFT_MODE); // Overwrite previous text
wsteenberg 0:ebf3f36f3a64 100 lcd_.DisplayStringAt(60, 330, (uint8_t *)"SLIDER1 = 50%", LEFT_MODE); // Write text to LCD
wsteenberg 0:ebf3f36f3a64 101 }
wsteenberg 0:ebf3f36f3a64 102 else // Slider Control Value decision
wsteenberg 0:ebf3f36f3a64 103 {
wsteenberg 0:ebf3f36f3a64 104 lcd_.DisplayStringAt(60, 330, (uint8_t *)" ", LEFT_MODE); // Overwrite previous text
wsteenberg 0:ebf3f36f3a64 105 lcd_.DisplayStringAt(60, 330, (uint8_t *)"SLIDER1 > 50%", LEFT_MODE); // Write text to LCD
wsteenberg 0:ebf3f36f3a64 106 }
wsteenberg 0:ebf3f36f3a64 107 } // End sld1 instructions
wsteenberg 0:ebf3f36f3a64 108
wsteenberg 0:ebf3f36f3a64 109 if (Slider2.Moved()) // Check if Slider2 Slider was touched and run instructions if true
wsteenberg 0:ebf3f36f3a64 110 {
wsteenberg 0:ebf3f36f3a64 111 led_green = 0;
wsteenberg 0:ebf3f36f3a64 112 lcd_.SetTextColor(LCD_COLOR_BLACK);
wsteenberg 0:ebf3f36f3a64 113 lcd_.FillRect(400, 265, 80, 40); // Draw border to display Slider Control Value
wsteenberg 0:ebf3f36f3a64 114 lcd_.SetTextColor(LCD_COLOR_WHITE);
wsteenberg 0:ebf3f36f3a64 115 lcd_.FillRect(410, 270, 60, 30); // Draw border to display Slider Control Value
wsteenberg 0:ebf3f36f3a64 116
wsteenberg 0:ebf3f36f3a64 117 sprintf(char_SliderDisplayValue, "%3d", (int) SliderDisplayValue_); // Convert integer to text
wsteenberg 0:ebf3f36f3a64 118 lcd_.SetFont(&Font16); // Set Font size
wsteenberg 0:ebf3f36f3a64 119 lcd_.SetTextColor(LCD_COLOR_BLACK); // Set Font colour
wsteenberg 0:ebf3f36f3a64 120 lcd_.DisplayStringAt(415, 280, (uint8_t *)char_SliderDisplayValue, LEFT_MODE); // Write Slider Control Value to the LCD
wsteenberg 0:ebf3f36f3a64 121 }
wsteenberg 0:ebf3f36f3a64 122
wsteenberg 0:ebf3f36f3a64 123
wsteenberg 0:ebf3f36f3a64 124 if (btn1.Press()) // Check if btn1 button was touched and run instructions if true
wsteenberg 0:ebf3f36f3a64 125 {
wsteenberg 0:ebf3f36f3a64 126 lcd_.SetFont(&Font16);
wsteenberg 0:ebf3f36f3a64 127 lcd_.SetTextColor(LCD_COLOR_BLACK);
wsteenberg 0:ebf3f36f3a64 128 lcd_.DisplayStringAt(5, 200, (uint8_t *)"Button1 pressed - switch on orange LED", LEFT_MODE);
wsteenberg 0:ebf3f36f3a64 129 led_orange = 0;
wsteenberg 0:ebf3f36f3a64 130 wait(0.5);
wsteenberg 0:ebf3f36f3a64 131 lcd_.DisplayStringAt(5, 200, (uint8_t *)" ", LEFT_MODE);
wsteenberg 0:ebf3f36f3a64 132 } // End btn1 button instructions
wsteenberg 0:ebf3f36f3a64 133
wsteenberg 0:ebf3f36f3a64 134 if (test.Press()) // Check if test button was touched and run instructions if true
wsteenberg 0:ebf3f36f3a64 135 {
wsteenberg 0:ebf3f36f3a64 136 lcd_.SetFont(&Font16);
wsteenberg 0:ebf3f36f3a64 137 lcd_.SetTextColor(LCD_COLOR_BLACK);
wsteenberg 0:ebf3f36f3a64 138 lcd_.DisplayStringAt(5, 200, (uint8_t *)"TEST pressed - switch on red LED", LEFT_MODE);
wsteenberg 0:ebf3f36f3a64 139 led_red = 0;
wsteenberg 0:ebf3f36f3a64 140 wait(0.5);
wsteenberg 0:ebf3f36f3a64 141 lcd_.DisplayStringAt(5, 200, (uint8_t *)" ", LEFT_MODE);
wsteenberg 0:ebf3f36f3a64 142
wsteenberg 0:ebf3f36f3a64 143 } // End test button instructions
wsteenberg 0:ebf3f36f3a64 144
wsteenberg 0:ebf3f36f3a64 145 if (hide.Press()) // Check if hide button was touched and run instructions if true
wsteenberg 0:ebf3f36f3a64 146 {
wsteenberg 0:ebf3f36f3a64 147 lcd_.SetFont(&Font16);
wsteenberg 0:ebf3f36f3a64 148 lcd_.SetTextColor(LCD_COLOR_BLACK);
wsteenberg 0:ebf3f36f3a64 149 lcd_.DisplayStringAt(5, 200, (uint8_t *)"Hide pressed - Hide other buttons", LEFT_MODE);
wsteenberg 0:ebf3f36f3a64 150 led_green = 0;
wsteenberg 0:ebf3f36f3a64 151 btn1.Hide(); // Hide btn1 button
wsteenberg 0:ebf3f36f3a64 152 test.Hide(); // Hide test button
wsteenberg 0:ebf3f36f3a64 153 hide.Hide();
wsteenberg 0:ebf3f36f3a64 154 show.Render();
wsteenberg 0:ebf3f36f3a64 155 wait(0.5);
wsteenberg 0:ebf3f36f3a64 156 lcd_.DisplayStringAt(5, 200, (uint8_t *)" ", LEFT_MODE);
wsteenberg 0:ebf3f36f3a64 157 } // End hide button instructions
wsteenberg 0:ebf3f36f3a64 158
wsteenberg 0:ebf3f36f3a64 159 if (show.Press()) // Check if hide button was touched and run instructions if true
wsteenberg 0:ebf3f36f3a64 160 {
wsteenberg 0:ebf3f36f3a64 161 lcd_.SetFont(&Font16);
wsteenberg 0:ebf3f36f3a64 162 lcd_.SetTextColor(LCD_COLOR_BLACK);
wsteenberg 0:ebf3f36f3a64 163 lcd_.DisplayStringAt(5, 200, (uint8_t *)"UNHIDE pressed - Restore other buttons", LEFT_MODE);
wsteenberg 0:ebf3f36f3a64 164 led_blue = 0;
wsteenberg 0:ebf3f36f3a64 165 wait(0.5);
wsteenberg 0:ebf3f36f3a64 166 lcd_.DisplayStringAt(5, 200, (uint8_t *)" ", LEFT_MODE);
wsteenberg 0:ebf3f36f3a64 167 show.Hide(); // Hide show button before drawing new button in same place
wsteenberg 0:ebf3f36f3a64 168 hide.Render(); // Draw hide button after hiding button in same position
wsteenberg 0:ebf3f36f3a64 169 btn1.Render(); // Draw btn1 button
wsteenberg 0:ebf3f36f3a64 170 test.Render(); // Draw test button
wsteenberg 0:ebf3f36f3a64 171
wsteenberg 0:ebf3f36f3a64 172 }
wsteenberg 0:ebf3f36f3a64 173
wsteenberg 0:ebf3f36f3a64 174 if (button3D.Press()) // Check if 3Dbutton button was touched and run instructions if true
wsteenberg 0:ebf3f36f3a64 175 {
wsteenberg 0:ebf3f36f3a64 176 lcd_.SetFont(&Font16);
wsteenberg 0:ebf3f36f3a64 177 lcd_.SetTextColor(LCD_COLOR_BLACK);
wsteenberg 0:ebf3f36f3a64 178 lcd_.DisplayStringAt(5, 200, (uint8_t *)"3D Button pressed - switch on blue LED", LEFT_MODE);
wsteenberg 0:ebf3f36f3a64 179 led_blue = 0;
wsteenberg 0:ebf3f36f3a64 180 wait(0.5);
wsteenberg 0:ebf3f36f3a64 181 lcd_.DisplayStringAt(5, 200, (uint8_t *)" ", LEFT_MODE);
wsteenberg 0:ebf3f36f3a64 182 } // End 3D button instructions
wsteenberg 0:ebf3f36f3a64 183
wsteenberg 0:ebf3f36f3a64 184 wait(0.02f);
wsteenberg 0:ebf3f36f3a64 185 } // End Main program loop
wsteenberg 0:ebf3f36f3a64 186 } // End Main program