Droni e Droidi / Mbed OS F746NG_TestAll

Dependencies:   TS_DISCO_F746NG LCD_DISCO_F746NG BSP_DISCO_F746NG BUTTON_GROUP Arduino

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?

UserRevisionLine numberNew 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