Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: TS_DISCO_F746NG LCD_DISCO_F746NG BSP_DISCO_F746NG BUTTON_GROUP Arduino
Functions.h@4:0ce191d3f0ce, 2020-12-21 (annotated)
- Committer:
- MaxScorda
- Date:
- Mon Dec 21 00:02:17 2020 +0000
- Revision:
- 4:0ce191d3f0ce
- Parent:
- 3:e7e663758e6d
- Child:
- 5:19f1743cecb1
sub
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| MaxScorda | 2:65480fe798bf | 1 | #ifndef FUNCTIONS_H |
| MaxScorda | 2:65480fe798bf | 2 | #define FUNCTIONS_H |
| MaxScorda | 3:e7e663758e6d | 3 | using namespace ButGrp; |
| MaxScorda | 2:65480fe798bf | 4 | |
| MaxScorda | 1:3fca41f3ed30 | 5 | void PressButton() |
| MaxScorda | 1:3fca41f3ed30 | 6 | { |
| MaxScorda | 1:3fca41f3ed30 | 7 | static int ccont=0; |
| MaxScorda | 1:3fca41f3ed30 | 8 | led1= !led1; |
| MaxScorda | 1:3fca41f3ed30 | 9 | ccont++; |
| MaxScorda | 1:3fca41f3ed30 | 10 | sprintf(str, "Tasto premuto %d volte", ccont); |
| MaxScorda | 1:3fca41f3ed30 | 11 | BSP_LCD_DisplayStringAt(0, LINE(6), (uint8_t *) str, CENTER_MODE); |
| MaxScorda | 2:65480fe798bf | 12 | } |
| MaxScorda | 2:65480fe798bf | 13 | |
| MaxScorda | 3:e7e663758e6d | 14 | void GestioneButton() |
| MaxScorda | 3:e7e663758e6d | 15 | { |
| MaxScorda | 3:e7e663758e6d | 16 | int num; |
| MaxScorda | 3:e7e663758e6d | 17 | bool touched = bGroup.GetTouchedNumber(num, LCD_COLOR_DARKBLUE); |
| MaxScorda | 3:e7e663758e6d | 18 | |
| MaxScorda | 3:e7e663758e6d | 19 | if (touched) { |
| MaxScorda | 3:e7e663758e6d | 20 | char str[20]; |
| MaxScorda | 3:e7e663758e6d | 21 | BSP_LCD_.SetFont(&Font16); |
| MaxScorda | 3:e7e663758e6d | 22 | BSP_LCD_.SetTextColor(LCD_COLOR_WHITE); |
| MaxScorda | 3:e7e663758e6d | 23 | sprintf(str, "Button%d pressed", num+1); |
| MaxScorda | 3:e7e663758e6d | 24 | BSP_LCD_.DisplayStringAt(X1, Y1, (uint8_t *)str, LEFT_MODE); |
| MaxScorda | 3:e7e663758e6d | 25 | |
| MaxScorda | 3:e7e663758e6d | 26 | reset.Redraw(); |
| MaxScorda | 3:e7e663758e6d | 27 | } |
| MaxScorda | 3:e7e663758e6d | 28 | |
| MaxScorda | 3:e7e663758e6d | 29 | if (sw.Touched(0, LCD_COLOR_DARKGREEN)) |
| MaxScorda | 3:e7e663758e6d | 30 | BSP_LCD_.DisplayStringAt(X1, 210, (uint8_t *)"ON ", LEFT_MODE); |
| MaxScorda | 3:e7e663758e6d | 31 | if (sw.Touched(1, LCD_COLOR_DARKGREEN)) |
| MaxScorda | 3:e7e663758e6d | 32 | BSP_LCD_.DisplayStringAt(X1, 210, (uint8_t *)"OFF", LEFT_MODE); |
| MaxScorda | 3:e7e663758e6d | 33 | |
| MaxScorda | 3:e7e663758e6d | 34 | if (reset.Touched()) { |
| MaxScorda | 3:e7e663758e6d | 35 | bGroup.Redraw(num); |
| MaxScorda | 3:e7e663758e6d | 36 | reset.Draw(INACTIVE, LCD_COLOR_GRAY); |
| MaxScorda | 3:e7e663758e6d | 37 | BSP_LCD_.SetFont(&Font16); |
| MaxScorda | 3:e7e663758e6d | 38 | BSP_LCD_.DisplayStringAt(X1, Y1, (uint8_t *)" ", LEFT_MODE); |
| MaxScorda | 3:e7e663758e6d | 39 | } |
| MaxScorda | 3:e7e663758e6d | 40 | |
| MaxScorda | 3:e7e663758e6d | 41 | int mNum; |
| MaxScorda | 3:e7e663758e6d | 42 | if (multiTouch.GetTouchedNumber(mNum, LCD_COLOR_DARKBLUE)) { |
| MaxScorda | 3:e7e663758e6d | 43 | Button::SetMultiTouch(mNum == 0); // Set or reset multi-touch |
| MaxScorda | 3:e7e663758e6d | 44 | if (mNum == 0) |
| MaxScorda | 3:e7e663758e6d | 45 | BSP_LCD_.DisplayStringAt(320, Y0+150, (uint8_t *)"ON ", LEFT_MODE); |
| MaxScorda | 3:e7e663758e6d | 46 | else |
| MaxScorda | 3:e7e663758e6d | 47 | BSP_LCD_.DisplayStringAt(320, Y0+150, (uint8_t *)"OFF", LEFT_MODE); |
| MaxScorda | 3:e7e663758e6d | 48 | } |
| MaxScorda | 3:e7e663758e6d | 49 | wait(0.01f); |
| MaxScorda | 3:e7e663758e6d | 50 | |
| MaxScorda | 3:e7e663758e6d | 51 | } |
| MaxScorda | 3:e7e663758e6d | 52 | |
| MaxScorda | 3:e7e663758e6d | 53 | void GestioneTouch() |
| MaxScorda | 3:e7e663758e6d | 54 | { |
| MaxScorda | 3:e7e663758e6d | 55 | static uint16_t x=0, y=0; |
| MaxScorda | 3:e7e663758e6d | 56 | uint8_t idx; |
| MaxScorda | 3:e7e663758e6d | 57 | uint8_t cleared = 0; |
| MaxScorda | 3:e7e663758e6d | 58 | uint8_t prev_nb_touches = 0; |
| MaxScorda | 3:e7e663758e6d | 59 | BSP_TS_GetState(&TS_State); |
| MaxScorda | 3:e7e663758e6d | 60 | if (TS_State.touchDetected) { |
| MaxScorda | 3:e7e663758e6d | 61 | // Clear lines corresponding to old touches coordinates |
| MaxScorda | 3:e7e663758e6d | 62 | if (TS_State.touchDetected < prev_nb_touches) { |
| MaxScorda | 3:e7e663758e6d | 63 | for (idx = (TS_State.touchDetected + 1); idx <= 5; idx++) { |
| MaxScorda | 3:e7e663758e6d | 64 | BSP_LCD_ClearStringLine(idx); |
| MaxScorda | 3:e7e663758e6d | 65 | } |
| MaxScorda | 3:e7e663758e6d | 66 | } |
| MaxScorda | 3:e7e663758e6d | 67 | prev_nb_touches = TS_State.touchDetected; |
| MaxScorda | 3:e7e663758e6d | 68 | cleared = 0; |
| MaxScorda | 4:0ce191d3f0ce | 69 | sprintf(str, "Touches: %d", TS_State.touchDetected); |
| MaxScorda | 4:0ce191d3f0ce | 70 | BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)str, LEFT_MODE); |
| MaxScorda | 3:e7e663758e6d | 71 | |
| MaxScorda | 3:e7e663758e6d | 72 | BSP_LCD_DrawPixel(x, y, LCD_COLOR_BLACK); |
| MaxScorda | 3:e7e663758e6d | 73 | for (idx = 0; idx < TS_State.touchDetected; idx++) { |
| MaxScorda | 3:e7e663758e6d | 74 | x = TS_State.touchX[idx]; |
| MaxScorda | 3:e7e663758e6d | 75 | y = TS_State.touchY[idx]; |
| MaxScorda | 4:0ce191d3f0ce | 76 | sprintf(str, "Touch %d: x=%d y=%d ", idx+1, x, y); |
| MaxScorda | 4:0ce191d3f0ce | 77 | BSP_LCD_DisplayStringAt(0, LINE(idx+1), (uint8_t *)str, LEFT_MODE); |
| MaxScorda | 3:e7e663758e6d | 78 | } |
| MaxScorda | 3:e7e663758e6d | 79 | |
| MaxScorda | 3:e7e663758e6d | 80 | BSP_LCD_DrawPixel(TS_State.touchX[0], TS_State.touchY[0], LCD_COLOR_WHITE); |
| MaxScorda | 3:e7e663758e6d | 81 | } else { |
| MaxScorda | 3:e7e663758e6d | 82 | if (!cleared) { |
| MaxScorda | 4:0ce191d3f0ce | 83 | sprintf(str, "Touches: 0"); |
| MaxScorda | 3:e7e663758e6d | 84 | BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); |
| MaxScorda | 3:e7e663758e6d | 85 | cleared = 1; |
| MaxScorda | 3:e7e663758e6d | 86 | } |
| MaxScorda | 3:e7e663758e6d | 87 | } |
| MaxScorda | 3:e7e663758e6d | 88 | } |
| MaxScorda | 3:e7e663758e6d | 89 | |
| MaxScorda | 3:e7e663758e6d | 90 | void SetLayer(int numlayer) |
| MaxScorda | 3:e7e663758e6d | 91 | { |
| MaxScorda | 3:e7e663758e6d | 92 | // vedere come passare BSPLCD_ |
| MaxScorda | 3:e7e663758e6d | 93 | for (int idx = 0; idx < NUMLAYER; idx++) { |
| MaxScorda | 3:e7e663758e6d | 94 | sprintf(str, "Touches: %d",idx); |
| MaxScorda | 3:e7e663758e6d | 95 | BSP_LCD_DisplayStringAt(0, LINE(12+idx), (uint8_t *)&str, LEFT_MODE); |
| MaxScorda | 3:e7e663758e6d | 96 | if (idx==numlayer) { |
| MaxScorda | 3:e7e663758e6d | 97 | BSP_LCD_SelectLayer(idx); |
| MaxScorda | 3:e7e663758e6d | 98 | BSP_LCD_SetLayerVisible(idx, ENABLE); |
| MaxScorda | 3:e7e663758e6d | 99 | BSP_LCD_DisplayStringAt(50, LINE(12+idx), (uint8_t *)"ON", RIGHT_MODE); |
| MaxScorda | 3:e7e663758e6d | 100 | } else { |
| MaxScorda | 3:e7e663758e6d | 101 | BSP_LCD_SetLayerVisible(idx, DISABLE); |
| MaxScorda | 3:e7e663758e6d | 102 | BSP_LCD_DisplayStringAt(50, LINE(12+idx), (uint8_t *)"OFF", RIGHT_MODE); |
| MaxScorda | 3:e7e663758e6d | 103 | } |
| MaxScorda | 3:e7e663758e6d | 104 | } |
| MaxScorda | 3:e7e663758e6d | 105 | } |
| MaxScorda | 3:e7e663758e6d | 106 | |
| MaxScorda | 2:65480fe798bf | 107 | #endif |