F469_GUI Demo

Dependencies:   BSP_DISCO_F469NI F469_GUI LCD_DISCO_F469NI TS_DISCO_F469NI mbed

Committer:
inkiiin
Date:
Sun Oct 23 16:00:40 2016 +0000
Revision:
0:0a8891401c4f
Demo Aplication for F469_GUI

Who changed what in which revision?

UserRevisionLine numberNew contents of line
inkiiin 0:0a8891401c4f 1 #include "mbed.h"
inkiiin 0:0a8891401c4f 2 #include "stm32469i_discovery.h"
inkiiin 0:0a8891401c4f 3 #include "TS_DISCO_F469NI.h"
inkiiin 0:0a8891401c4f 4 #include "LCD_DISCO_F469NI.h"
inkiiin 0:0a8891401c4f 5 #include "F469_GUI.hpp"
inkiiin 0:0a8891401c4f 6
inkiiin 0:0a8891401c4f 7 int main()
inkiiin 0:0a8891401c4f 8 {
inkiiin 0:0a8891401c4f 9 BSP_LED_Init(DISCO_LED_BLUE);
inkiiin 0:0a8891401c4f 10
inkiiin 0:0a8891401c4f 11 Label obj10(400, 2, "Dome: GUI parts, 2016/07/23, 12:24", Label::CENTER, Font16);
inkiiin 0:0a8891401c4f 12 Label obj11(400, 20, "Button, ButtonGroup, Label, NumericLabel, BlinkLabel,",
inkiiin 0:0a8891401c4f 13 Label::CENTER);
inkiiin 0:0a8891401c4f 14 Label obj12(400, 32, "SeekBar, SeekbarGroup",
inkiiin 0:0a8891401c4f 15 Label::CENTER);
inkiiin 0:0a8891401c4f 16
inkiiin 0:0a8891401c4f 17 Button button1(10, 54, 50, 40, "1");
inkiiin 0:0a8891401c4f 18 Button button2(62, 54, 50, 40, "2");
inkiiin 0:0a8891401c4f 19
inkiiin 0:0a8891401c4f 20 const int NUMBER_BUTTONS = 4;
inkiiin 0:0a8891401c4f 21 const string STR1[NUMBER_BUTTONS] = {"Button1", "Button2", "Button3", "Activate"};
inkiiin 0:0a8891401c4f 22 ButtonGroup bGroup1(160, 54, 66, 40, NUMBER_BUTTONS, STR1, 5, 5, 3, 1,
inkiiin 0:0a8891401c4f 23 Font12, LCD_COLOR_WHITE, 0xFF003538, 0xFFB70068, 0xFFFF7FFF);
inkiiin 0:0a8891401c4f 24 NumericLabel<int> bTouch(240, 112, Label::LEFT, Font12, LCD_COLOR_MAGENTA);
inkiiin 0:0a8891401c4f 25
inkiiin 0:0a8891401c4f 26 // Control status of bGroup1
inkiiin 0:0a8891401c4f 27 ButtonGroup bGroup2(160, 150, 66, 40, 3, (string[]){"0", "1", "2"}, 5, 5, 3);
inkiiin 0:0a8891401c4f 28 bGroup2.InactivateAll();
inkiiin 0:0a8891401c4f 29
inkiiin 0:0a8891401c4f 30 // Switching buttons to control barH active or inactive
inkiiin 0:0a8891401c4f 31 ButtonGroup bGroup3(10, 150, 66, 40, 2, (string[]){"ON", "OFF"}, 0, 0, 2);
inkiiin 0:0a8891401c4f 32 bGroup3.TouchedColor(0);
inkiiin 0:0a8891401c4f 33
inkiiin 0:0a8891401c4f 34 Button doNotTouch(250, 220, 120, 40, "Don't Touch", Font12,
inkiiin 0:0a8891401c4f 35 GuiBase::ENUM_TEXT, GuiBase::ENUM_BACK,
inkiiin 0:0a8891401c4f 36 LCD_COLOR_DARKGREEN, LCD_COLOR_RED);
inkiiin 0:0a8891401c4f 37
inkiiin 0:0a8891401c4f 38 // Using default value for argument (Horizontal)
inkiiin 0:0a8891401c4f 39 SeekBar barH(20, 250, 200, -5, 5, 0, "-5", "", "5");
inkiiin 0:0a8891401c4f 40 NumericLabel<float> numLabel1(80, 205, "%5.1f", barH.GetValue());
inkiiin 0:0a8891401c4f 41 NumericLabel<int> numLabel2(130, 205, "%3d", (int)barH.GetValue());
inkiiin 0:0a8891401c4f 42 NumericLabel<int> numLabel3(160, 205);
inkiiin 0:0a8891401c4f 43
inkiiin 0:0a8891401c4f 44 // SeekbarGroup (vertical)
inkiiin 0:0a8891401c4f 45 SeekbarGroup barV(410, 130, 121, 2, 45, -6, 6, 2,
inkiiin 0:0a8891401c4f 46 SeekBar::Vertical, 0xFFA0FFC0);
inkiiin 0:0a8891401c4f 47 NumericLabel<float> **numLabel4;
inkiiin 0:0a8891401c4f 48 numLabel4 = new NumericLabel<float> *[2];
inkiiin 0:0a8891401c4f 49 for (int n=0; n<2; n++) numLabel4[n] =
inkiiin 0:0a8891401c4f 50 new NumericLabel<float>(410+n*45, 104, "%4.1f", barV.GetValue(n), Label::CENTER);
inkiiin 0:0a8891401c4f 51 NumericLabel<int> numLabel5(455, 92, "%1d", barV.GetIntValue(0), Label::CENTER);
inkiiin 0:0a8891401c4f 52
inkiiin 0:0a8891401c4f 53 // Test of left-, cenrer-, and right-justified
inkiiin 0:0a8891401c4f 54 Label leftJustified(420, 54, "ABC", Label::LEFT);
inkiiin 0:0a8891401c4f 55 Label centerJustified(420, 64, "ABC", Label::CENTER);
inkiiin 0:0a8891401c4f 56 Label rightJustified1(420, 74, "ABC", Label::RIGHT);
inkiiin 0:0a8891401c4f 57
inkiiin 0:0a8891401c4f 58 while (true)
inkiiin 0:0a8891401c4f 59 {
inkiiin 0:0a8891401c4f 60 if (button1.Touched()) button2.Draw();
inkiiin 0:0a8891401c4f 61 if (button2.Touched()) button1.Draw();
inkiiin 0:0a8891401c4f 62
inkiiin 0:0a8891401c4f 63 int num;
inkiiin 0:0a8891401c4f 64 if (bGroup1.GetTouchedNumber(num))
inkiiin 0:0a8891401c4f 65 bTouch.Draw("Button%d touched", num+1);
inkiiin 0:0a8891401c4f 66 if (num == 3)
inkiiin 0:0a8891401c4f 67 bGroup2.ActivateAll();
inkiiin 0:0a8891401c4f 68
inkiiin 0:0a8891401c4f 69 if (bGroup2.GetTouchedNumber(num))
inkiiin 0:0a8891401c4f 70 switch (num)
inkiiin 0:0a8891401c4f 71 {
inkiiin 0:0a8891401c4f 72 case 0: button1.Activate();
inkiiin 0:0a8891401c4f 73 bGroup1.Activate(1);
inkiiin 0:0a8891401c4f 74 BSP_LED_On(DISCO_LED_BLUE);
inkiiin 0:0a8891401c4f 75 bGroup1.DrawAll();
inkiiin 0:0a8891401c4f 76 break;
inkiiin 0:0a8891401c4f 77 case 1: button1.Inactivate();
inkiiin 0:0a8891401c4f 78 bGroup1.Inactivate(1);
inkiiin 0:0a8891401c4f 79 BSP_LED_Off(DISCO_LED_BLUE);
inkiiin 0:0a8891401c4f 80 break;
inkiiin 0:0a8891401c4f 81 case 2: bGroup1.EraseAll();//for (int n=0; n<4; n++) bGroup1.Erase(n);
inkiiin 0:0a8891401c4f 82 for (int n=0; n<2; n++)
inkiiin 0:0a8891401c4f 83 {
inkiiin 0:0a8891401c4f 84 barV.Draw(n, 0); // reset seekbar
inkiiin 0:0a8891401c4f 85 numLabel4[n]->Draw("%4.1f", barV.GetValue(n));
inkiiin 0:0a8891401c4f 86 }
inkiiin 0:0a8891401c4f 87 break;
inkiiin 0:0a8891401c4f 88 }
inkiiin 0:0a8891401c4f 89
inkiiin 0:0a8891401c4f 90 if (barH.Slide())
inkiiin 0:0a8891401c4f 91 {
inkiiin 0:0a8891401c4f 92 numLabel1.Draw("%5.1f", barH.GetValue());
inkiiin 0:0a8891401c4f 93 int8_t x = (int8_t)barH.GetValue();
inkiiin 0:0a8891401c4f 94 numLabel2.Draw("%3d", x);
inkiiin 0:0a8891401c4f 95
inkiiin 0:0a8891401c4f 96 numLabel3.Draw("%3d", barH.GetIntValue());
inkiiin 0:0a8891401c4f 97 }
inkiiin 0:0a8891401c4f 98
inkiiin 0:0a8891401c4f 99 int sbNum;
inkiiin 0:0a8891401c4f 100 if (barV.GetSlidedNumber(sbNum))
inkiiin 0:0a8891401c4f 101 {
inkiiin 0:0a8891401c4f 102 if (sbNum == 0) numLabel4[sbNum]->Draw("%4.1f", barV.GetValue(sbNum));
inkiiin 0:0a8891401c4f 103 else numLabel4[sbNum]->Draw("%4.1f", barV.GetValue(sbNum));
inkiiin 0:0a8891401c4f 104 if (sbNum == 1) numLabel5.Draw("%1d", barV.GetIntValue(sbNum));
inkiiin 0:0a8891401c4f 105 }
inkiiin 0:0a8891401c4f 106 // If "doNotTouch" button touched, trapped into endless loop
inkiiin 0:0a8891401c4f 107 if (doNotTouch.Touched())
inkiiin 0:0a8891401c4f 108 BlinkLabel warning(250, 200, "You must reset", Label::LEFT, Font16);
inkiiin 0:0a8891401c4f 109
inkiiin 0:0a8891401c4f 110 // SeekBar active inactive switching
inkiiin 0:0a8891401c4f 111 if (bGroup3.Touched(0))
inkiiin 0:0a8891401c4f 112 {
inkiiin 0:0a8891401c4f 113 barH.Activate();
inkiiin 0:0a8891401c4f 114 barV.ActivateAll();
inkiiin 0:0a8891401c4f 115 }
inkiiin 0:0a8891401c4f 116 if (bGroup3.Touched(1))
inkiiin 0:0a8891401c4f 117 {
inkiiin 0:0a8891401c4f 118 barH.Inactivate();
inkiiin 0:0a8891401c4f 119 barV.InactivateAll();
inkiiin 0:0a8891401c4f 120 }
inkiiin 0:0a8891401c4f 121
inkiiin 0:0a8891401c4f 122 wait(0.02f);
inkiiin 0:0a8891401c4f 123 }
inkiiin 0:0a8891401c4f 124 }