![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
DISCO-F469NI_Button_and_Slider_Library v1.0
Dependencies: BSP_DISCO_F469NI LCD_DISCO_F469NI TS_DISCO_F469NI mbed
main.cpp@0:ebf3f36f3a64, 2018-09-25 (annotated)
- Committer:
- wsteenberg
- Date:
- Tue Sep 25 12:38:48 2018 +0000
- Revision:
- 0:ebf3f36f3a64
DISCO-F469NI_Button_and_Slider_Library v1.0
Who changed what in which revision?
User | Revision | Line number | New 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 |