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 20:31:09 2020 +0000
Revision:
6:ba00a5cd9466
Parent:
5:19f1743cecb1
Child:
7:f654d2b1f08b
more touch;

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 6:ba00a5cd9466 5 void SetLayer(int numlayer, int tipo=0)
MaxScorda 6:ba00a5cd9466 6 {
MaxScorda 6:ba00a5cd9466 7 return;
MaxScorda 6:ba00a5cd9466 8 // vedere come passare BSPLCD_
MaxScorda 6:ba00a5cd9466 9 for (int idx = 0; idx < NUMLAYER; idx++) {
MaxScorda 6:ba00a5cd9466 10 // sprintf(str, "Touches: %d",idx);
MaxScorda 6:ba00a5cd9466 11 BSP_LCD_DisplayStringAt(0, LINE(12+idx), (uint8_t *)&str, LEFT_MODE);
MaxScorda 6:ba00a5cd9466 12 if (idx==numlayer) {
MaxScorda 6:ba00a5cd9466 13 BSP_LCD_SetLayerVisible(idx, ENABLE);
MaxScorda 6:ba00a5cd9466 14 BSP_LCD_SelectLayer(idx);
MaxScorda 6:ba00a5cd9466 15 // BSP_LCD_DisplayStringAt(50, LINE(12+idx), (uint8_t *)"ON", RIGHT_MODE);
MaxScorda 6:ba00a5cd9466 16 } else {
MaxScorda 6:ba00a5cd9466 17 if (tipo==0) {
MaxScorda 6:ba00a5cd9466 18 BSP_LCD_SetLayerVisible(idx, DISABLE);
MaxScorda 6:ba00a5cd9466 19 // BSP_LCD_DisplayStringAt(50, LINE(12+idx), (uint8_t *)"OFF", RIGHT_MODE);
MaxScorda 6:ba00a5cd9466 20 }
MaxScorda 6:ba00a5cd9466 21 }
MaxScorda 6:ba00a5cd9466 22 }
MaxScorda 6:ba00a5cd9466 23 }
MaxScorda 6:ba00a5cd9466 24
MaxScorda 1:3fca41f3ed30 25 void PressButton()
MaxScorda 1:3fca41f3ed30 26 {
MaxScorda 1:3fca41f3ed30 27 static int ccont=0;
MaxScorda 1:3fca41f3ed30 28 led1= !led1;
MaxScorda 1:3fca41f3ed30 29 ccont++;
MaxScorda 6:ba00a5cd9466 30 if (nummenu==0) {
MaxScorda 6:ba00a5cd9466 31 BSP_LCD_.SetFont(&Font16);
MaxScorda 6:ba00a5cd9466 32 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
MaxScorda 6:ba00a5cd9466 33 sprintf(str, "Tasto premuto %d volte", ccont);
MaxScorda 6:ba00a5cd9466 34 BSP_LCD_DisplayStringAt(0, LINE(10), (uint8_t *) str, CENTER_MODE);
MaxScorda 6:ba00a5cd9466 35 }
MaxScorda 2:65480fe798bf 36 }
MaxScorda 2:65480fe798bf 37
MaxScorda 3:e7e663758e6d 38 void GestioneButton()
MaxScorda 3:e7e663758e6d 39 {
MaxScorda 6:ba00a5cd9466 40 // vedi buttoGroup_Demo per esempio group
MaxScorda 6:ba00a5cd9466 41 static bool toccato=false;
MaxScorda 6:ba00a5cd9466 42 bool modifica=false;
MaxScorda 6:ba00a5cd9466 43 BSP_TS_GetState(&TS_State);
MaxScorda 3:e7e663758e6d 44
MaxScorda 3:e7e663758e6d 45
MaxScorda 6:ba00a5cd9466 46 if ((avanti.Touched())&& (toccato==false)) {
MaxScorda 6:ba00a5cd9466 47 nummenu=(++nummenu)%MAXMENU;
MaxScorda 6:ba00a5cd9466 48 // reset.Draw(INACTIVE, LCD_COLOR_GRAY);
MaxScorda 6:ba00a5cd9466 49 modifica=true;
MaxScorda 3:e7e663758e6d 50 }
MaxScorda 6:ba00a5cd9466 51 if ((indietro.Touched()) && (toccato==false)) {
MaxScorda 6:ba00a5cd9466 52 nummenu=((--nummenu)+MAXMENU)%MAXMENU;
MaxScorda 6:ba00a5cd9466 53 // reset.Draw(INACTIVE, LCD_COLOR_GRAY);
MaxScorda 6:ba00a5cd9466 54 modifica=true;
MaxScorda 3:e7e663758e6d 55 }
MaxScorda 3:e7e663758e6d 56 wait(0.01f);
MaxScorda 3:e7e663758e6d 57
MaxScorda 6:ba00a5cd9466 58 if((TS_State.touchDetected) && (toccato==false)) {
MaxScorda 6:ba00a5cd9466 59 toccato=true;
MaxScorda 6:ba00a5cd9466 60 } else if((!TS_State.touchDetected) && (toccato==true)) {
MaxScorda 6:ba00a5cd9466 61 toccato=false;
MaxScorda 6:ba00a5cd9466 62 }
MaxScorda 6:ba00a5cd9466 63
MaxScorda 6:ba00a5cd9466 64 if (modifica==true) {
MaxScorda 6:ba00a5cd9466 65 if (nummenu==0) {
MaxScorda 6:ba00a5cd9466 66 BSP_LCD_.SetFont(&Font12);
MaxScorda 6:ba00a5cd9466 67 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
MaxScorda 6:ba00a5cd9466 68 sprintf(str, "menu: %d", nummenu);
MaxScorda 6:ba00a5cd9466 69 }
MaxScorda 6:ba00a5cd9466 70 BSP_LCD_DisplayStringAt(50, LINE(7), (uint8_t *)str, LEFT_MODE);
MaxScorda 6:ba00a5cd9466 71 BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
MaxScorda 6:ba00a5cd9466 72 BSP_LCD_FillRect(40+1, 45+1, DimX-80-1, DimY-45-45-1);
MaxScorda 6:ba00a5cd9466 73 BSP_LCD_FillRect(DimX/3+6, 1, ((DimX*2)/3)-7, 38);
MaxScorda 6:ba00a5cd9466 74 BSP_LCD_.SetFont(&Font24);
MaxScorda 6:ba00a5cd9466 75 BSP_LCD_SetTextColor(LCD_COLOR_YELLOW);
MaxScorda 6:ba00a5cd9466 76 switch (nummenu) {
MaxScorda 6:ba00a5cd9466 77 case 0:
MaxScorda 6:ba00a5cd9466 78 BSP_LCD_DisplayStringAt(DimX/3+10, 10, (uint8_t *) "Dati Generali", LEFT_MODE);
MaxScorda 6:ba00a5cd9466 79 break;
MaxScorda 6:ba00a5cd9466 80 case 1:
MaxScorda 6:ba00a5cd9466 81 BSP_LCD_DisplayStringAt(DimX/3+10, 10, (uint8_t *) "Da assegnare", LEFT_MODE);
MaxScorda 6:ba00a5cd9466 82 break;
MaxScorda 6:ba00a5cd9466 83 case 2:
MaxScorda 6:ba00a5cd9466 84 BSP_LCD_DisplayStringAt(DimX/3+10, 10, (uint8_t *) "Dati TCP", LEFT_MODE);
MaxScorda 6:ba00a5cd9466 85 break;
MaxScorda 6:ba00a5cd9466 86 }
MaxScorda 6:ba00a5cd9466 87
MaxScorda 6:ba00a5cd9466 88 }
MaxScorda 3:e7e663758e6d 89 }
MaxScorda 3:e7e663758e6d 90
MaxScorda 3:e7e663758e6d 91 void GestioneTouch()
MaxScorda 3:e7e663758e6d 92 {
MaxScorda 3:e7e663758e6d 93 static uint16_t x=0, y=0;
MaxScorda 3:e7e663758e6d 94 uint8_t cleared = 0;
MaxScorda 3:e7e663758e6d 95 uint8_t prev_nb_touches = 0;
MaxScorda 3:e7e663758e6d 96 BSP_TS_GetState(&TS_State);
MaxScorda 6:ba00a5cd9466 97 BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
MaxScorda 5:19f1743cecb1 98 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
MaxScorda 5:19f1743cecb1 99 BSP_LCD_.SetFont(&Font16);
MaxScorda 3:e7e663758e6d 100 if (TS_State.touchDetected) {
MaxScorda 3:e7e663758e6d 101 // Clear lines corresponding to old touches coordinates
MaxScorda 3:e7e663758e6d 102 if (TS_State.touchDetected < prev_nb_touches) {
MaxScorda 5:19f1743cecb1 103 for (int idx = (TS_State.touchDetected + 1); idx <= 5; idx++) {
MaxScorda 3:e7e663758e6d 104 BSP_LCD_ClearStringLine(idx);
MaxScorda 3:e7e663758e6d 105 }
MaxScorda 3:e7e663758e6d 106 }
MaxScorda 3:e7e663758e6d 107 prev_nb_touches = TS_State.touchDetected;
MaxScorda 3:e7e663758e6d 108 cleared = 0;
MaxScorda 4:0ce191d3f0ce 109 sprintf(str, "Touches: %d", TS_State.touchDetected);
MaxScorda 5:19f1743cecb1 110 BSP_LCD_DisplayStringAt(50, LINE(3), (uint8_t *)str, LEFT_MODE);
MaxScorda 6:ba00a5cd9466 111 SetLayer( 1);
MaxScorda 3:e7e663758e6d 112 BSP_LCD_DrawPixel(x, y, LCD_COLOR_BLACK);
MaxScorda 6:ba00a5cd9466 113 SetLayer( 0);
MaxScorda 5:19f1743cecb1 114 for (int idx = 0; idx < TS_State.touchDetected; idx++) {
MaxScorda 3:e7e663758e6d 115 x = TS_State.touchX[idx];
MaxScorda 3:e7e663758e6d 116 y = TS_State.touchY[idx];
MaxScorda 4:0ce191d3f0ce 117 sprintf(str, "Touch %d: x=%d y=%d ", idx+1, x, y);
MaxScorda 5:19f1743cecb1 118 BSP_LCD_DisplayStringAt(50, LINE(idx+4), (uint8_t *)str, LEFT_MODE);
MaxScorda 3:e7e663758e6d 119 }
MaxScorda 6:ba00a5cd9466 120 SetLayer( 1);
MaxScorda 3:e7e663758e6d 121 BSP_LCD_DrawPixel(TS_State.touchX[0], TS_State.touchY[0], LCD_COLOR_WHITE);
MaxScorda 6:ba00a5cd9466 122 SetLayer( 0);
MaxScorda 3:e7e663758e6d 123 } else {
MaxScorda 3:e7e663758e6d 124 if (!cleared) {
MaxScorda 4:0ce191d3f0ce 125 sprintf(str, "Touches: 0");
MaxScorda 5:19f1743cecb1 126 BSP_LCD_DisplayStringAt(50, LINE(3), (uint8_t *)&str, LEFT_MODE);
MaxScorda 3:e7e663758e6d 127 cleared = 1;
MaxScorda 3:e7e663758e6d 128 }
MaxScorda 3:e7e663758e6d 129 }
MaxScorda 3:e7e663758e6d 130 }
MaxScorda 3:e7e663758e6d 131
MaxScorda 6:ba00a5cd9466 132 void DatiTCP()
MaxScorda 3:e7e663758e6d 133 {
MaxScorda 6:ba00a5cd9466 134 static bool giavisualizzato=false;
MaxScorda 6:ba00a5cd9466 135 if ((nummenu==2)&&(giavisualizzato==false)) {
MaxScorda 6:ba00a5cd9466 136 BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
MaxScorda 6:ba00a5cd9466 137 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
MaxScorda 6:ba00a5cd9466 138 BSP_LCD_.SetFont(&Font16);
MaxScorda 6:ba00a5cd9466 139 BSP_LCD_DisplayStringAt(0, LINE(3), (uint8_t *)"Ethernet socket example", CENTER_MODE);
MaxScorda 6:ba00a5cd9466 140 // Show the network address
MaxScorda 6:ba00a5cd9466 141 const char *ip = net.get_ip_address();
MaxScorda 6:ba00a5cd9466 142 const char *netmask = net.get_netmask();
MaxScorda 6:ba00a5cd9466 143 const char *gateway = net.get_gateway();
MaxScorda 6:ba00a5cd9466 144 sprintf(str,"IP address: %s", ip ? ip : "None");
MaxScorda 6:ba00a5cd9466 145 BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)str, CENTER_MODE);
MaxScorda 6:ba00a5cd9466 146 sprintf(str,"Netmask: %s", netmask ? netmask : "None");
MaxScorda 6:ba00a5cd9466 147 BSP_LCD_DisplayStringAt(0, LINE(6), (uint8_t *)str, CENTER_MODE);
MaxScorda 6:ba00a5cd9466 148 sprintf(str,"Gateway: %s", gateway ? gateway : "None");
MaxScorda 6:ba00a5cd9466 149 BSP_LCD_DisplayStringAt(0, LINE(7), (uint8_t *)str, CENTER_MODE);
MaxScorda 6:ba00a5cd9466 150
MaxScorda 6:ba00a5cd9466 151 giavisualizzato=true;
MaxScorda 3:e7e663758e6d 152 }
MaxScorda 6:ba00a5cd9466 153
MaxScorda 6:ba00a5cd9466 154 if (nummenu!=2)
MaxScorda 6:ba00a5cd9466 155 giavisualizzato=false;
MaxScorda 3:e7e663758e6d 156 }
MaxScorda 3:e7e663758e6d 157
MaxScorda 6:ba00a5cd9466 158
MaxScorda 6:ba00a5cd9466 159
MaxScorda 2:65480fe798bf 160 #endif