F746NG Test All Functions
Dependencies: TS_DISCO_F746NG LCD_DISCO_F746NG BSP_DISCO_F746NG BUTTON_GROUP Arduino
ProgFunctions.h@10:4fef0d14dc70, 2020-12-29 (annotated)
- Committer:
- MaxScorda
- Date:
- Tue Dec 29 18:04:23 2020 +0000
- Revision:
- 10:4fef0d14dc70
- Parent:
- 7:f654d2b1f08b
Publish
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MaxScorda | 7:f654d2b1f08b | 1 | #ifndef PROGRAMFUNCTIONS_H |
MaxScorda | 7:f654d2b1f08b | 2 | #define PROGRAMFUNCTIONS_H |
MaxScorda | 7:f654d2b1f08b | 3 | using namespace ButGrp; |
MaxScorda | 7:f654d2b1f08b | 4 | |
MaxScorda | 7:f654d2b1f08b | 5 | void SetLayer(int numlayer, int tipo=0) |
MaxScorda | 7:f654d2b1f08b | 6 | { |
MaxScorda | 7:f654d2b1f08b | 7 | return; |
MaxScorda | 7:f654d2b1f08b | 8 | // vedere come passare BSPLCD_ |
MaxScorda | 7:f654d2b1f08b | 9 | for (int idx = 0; idx < NUMLAYER; idx++) { |
MaxScorda | 7:f654d2b1f08b | 10 | // sprintf(str, "Touches: %d",idx); |
MaxScorda | 7:f654d2b1f08b | 11 | BSP_LCD_DisplayStringAt(0, LINE(12+idx), (uint8_t *)&str, LEFT_MODE); |
MaxScorda | 7:f654d2b1f08b | 12 | if (idx==numlayer) { |
MaxScorda | 7:f654d2b1f08b | 13 | BSP_LCD_SetLayerVisible(idx, ENABLE); |
MaxScorda | 7:f654d2b1f08b | 14 | BSP_LCD_SelectLayer(idx); |
MaxScorda | 7:f654d2b1f08b | 15 | // BSP_LCD_DisplayStringAt(50, LINE(12+idx), (uint8_t *)"ON", RIGHT_MODE); |
MaxScorda | 7:f654d2b1f08b | 16 | } else { |
MaxScorda | 7:f654d2b1f08b | 17 | if (tipo==0) { |
MaxScorda | 7:f654d2b1f08b | 18 | BSP_LCD_SetLayerVisible(idx, DISABLE); |
MaxScorda | 7:f654d2b1f08b | 19 | // BSP_LCD_DisplayStringAt(50, LINE(12+idx), (uint8_t *)"OFF", RIGHT_MODE); |
MaxScorda | 7:f654d2b1f08b | 20 | } |
MaxScorda | 7:f654d2b1f08b | 21 | } |
MaxScorda | 7:f654d2b1f08b | 22 | } |
MaxScorda | 7:f654d2b1f08b | 23 | } |
MaxScorda | 7:f654d2b1f08b | 24 | |
MaxScorda | 7:f654d2b1f08b | 25 | void PressButton() |
MaxScorda | 7:f654d2b1f08b | 26 | { |
MaxScorda | 7:f654d2b1f08b | 27 | static int ccont=0; |
MaxScorda | 7:f654d2b1f08b | 28 | led1= !led1; |
MaxScorda | 7:f654d2b1f08b | 29 | ccont++; |
MaxScorda | 7:f654d2b1f08b | 30 | if (nummenu==0) { |
MaxScorda | 7:f654d2b1f08b | 31 | BSP_LCD_.SetFont(&Font16); |
MaxScorda | 7:f654d2b1f08b | 32 | BSP_LCD_SetTextColor(LCD_COLOR_WHITE); |
MaxScorda | 7:f654d2b1f08b | 33 | sprintf(str, "Tasto premuto %d volte", ccont); |
MaxScorda | 7:f654d2b1f08b | 34 | BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *) str, CENTER_MODE); |
MaxScorda | 7:f654d2b1f08b | 35 | } |
MaxScorda | 7:f654d2b1f08b | 36 | } |
MaxScorda | 7:f654d2b1f08b | 37 | |
MaxScorda | 7:f654d2b1f08b | 38 | void ReadSensors() |
MaxScorda | 7:f654d2b1f08b | 39 | { |
MaxScorda | 7:f654d2b1f08b | 40 | static long long int conteggio=0; |
MaxScorda | 7:f654d2b1f08b | 41 | if (conteggio+1000<millis()) { |
MaxScorda | 7:f654d2b1f08b | 42 | BSP_LCD_.SetFont(&Font16); |
MaxScorda | 7:f654d2b1f08b | 43 | BSP_LCD_SetTextColor(LCD_COLOR_WHITE); |
MaxScorda | 7:f654d2b1f08b | 44 | sprintf(str,"ADC Temp = %6.4f", adc_temp.read()*100); |
MaxScorda | 7:f654d2b1f08b | 45 | BSP_LCD_DisplayStringAt(140, LINE(7), (uint8_t *) str, LEFT_MODE); |
MaxScorda | 7:f654d2b1f08b | 46 | sprintf(str,"ADC VRef = %6.4f", adc_vref.read()); |
MaxScorda | 7:f654d2b1f08b | 47 | BSP_LCD_DisplayStringAt(140, LINE(8), (uint8_t *) str, LEFT_MODE); |
MaxScorda | 7:f654d2b1f08b | 48 | #if defined(TARGET_DISCO_F051R8) || defined(TARGET_NUCLEO_F030R8) || defined(TARGET_NUCLEO_F031K6) || defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F070RB) || defined(TARGET_NUCLEO_F072RB) || defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F207ZG) || defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_F303K8) || defined(TARGET_DISCO_F303VC) || defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303ZE) || defined(TARGET_DISCO_F334C8) || defined(TARGET_NUCLEO_F334R8) || defined(TARGET_MTS_DRAGONFLY_F411RE) || defined(TARGET_MTS_MDOT_F405RG) || defined(TARGET_MTS_MDOT_F411RE) || defined(TARGET_DISCO_F401VC) || defined(TARGET_NUCLEO_F401RE) || defined(TARGET_ARCH_MAX) || defined(TARGET_DISCO_F407VG) || defined(TARGET_NUCLEO_F410RB) || defined(TARGET_ELMO_F411RE) || defined(TARGET_NUCLEO_F411RE) || defined(TARGET_NUCLEO_F412ZG) || defined(TARGET_DISCO_F413ZH) || defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F429ZI) || defined(TARGET_NUCLEO_F439ZI) || defined(TARGET_B96B_F446VE) || defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F446ZE) || defined(TARGET_DISCO_F469NI) || defined(TARGET_DISCO_F746NG) || defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_NUCLEO_F756ZG) || defined(TARGET_NUCLEO_F767ZI) || defined(TARGET_DISCO_F769NI) || defined(TARGET_DISCO_L072CZ_LRWAN1) || defined(TARGET_NUCLEO_L432KC) || defined(TARGET_DISCO_L476VG) || defined(TARGET_NUCLEO_L476RG) || defined(TARGET_NUCLEO_L486RG) |
MaxScorda | 7:f654d2b1f08b | 49 | sprintf(str,"ADC VBat = %6.4f", adc_vbat.read()); |
MaxScorda | 7:f654d2b1f08b | 50 | BSP_LCD_DisplayStringAt(140, LINE(9), (uint8_t *) str, LEFT_MODE); |
MaxScorda | 7:f654d2b1f08b | 51 | #endif |
MaxScorda | 7:f654d2b1f08b | 52 | conteggio=millis(); |
MaxScorda | 7:f654d2b1f08b | 53 | } |
MaxScorda | 7:f654d2b1f08b | 54 | |
MaxScorda | 7:f654d2b1f08b | 55 | } |
MaxScorda | 7:f654d2b1f08b | 56 | |
MaxScorda | 7:f654d2b1f08b | 57 | void GestioneButton() |
MaxScorda | 7:f654d2b1f08b | 58 | { |
MaxScorda | 7:f654d2b1f08b | 59 | // vedi buttoGroup_Demo per esempio group |
MaxScorda | 7:f654d2b1f08b | 60 | static bool toccato=false; |
MaxScorda | 7:f654d2b1f08b | 61 | bool modifica=false; |
MaxScorda | 7:f654d2b1f08b | 62 | BSP_TS_GetState(&TS_State); |
MaxScorda | 7:f654d2b1f08b | 63 | |
MaxScorda | 7:f654d2b1f08b | 64 | |
MaxScorda | 7:f654d2b1f08b | 65 | if ((avanti.Touched())&& (toccato==false)) { |
MaxScorda | 7:f654d2b1f08b | 66 | nummenu=(++nummenu)%MAXMENU; |
MaxScorda | 7:f654d2b1f08b | 67 | // reset.Draw(INACTIVE, LCD_COLOR_GRAY); |
MaxScorda | 7:f654d2b1f08b | 68 | modifica=true; |
MaxScorda | 7:f654d2b1f08b | 69 | } |
MaxScorda | 7:f654d2b1f08b | 70 | if ((indietro.Touched()) && (toccato==false)) { |
MaxScorda | 7:f654d2b1f08b | 71 | nummenu=((--nummenu)+MAXMENU)%MAXMENU; |
MaxScorda | 7:f654d2b1f08b | 72 | // reset.Draw(INACTIVE, LCD_COLOR_GRAY); |
MaxScorda | 7:f654d2b1f08b | 73 | modifica=true; |
MaxScorda | 7:f654d2b1f08b | 74 | } |
MaxScorda | 7:f654d2b1f08b | 75 | wait(0.01f); |
MaxScorda | 7:f654d2b1f08b | 76 | |
MaxScorda | 7:f654d2b1f08b | 77 | if((TS_State.touchDetected) && (toccato==false)) { |
MaxScorda | 7:f654d2b1f08b | 78 | toccato=true; |
MaxScorda | 7:f654d2b1f08b | 79 | } else if((!TS_State.touchDetected) && (toccato==true)) { |
MaxScorda | 7:f654d2b1f08b | 80 | toccato=false; |
MaxScorda | 7:f654d2b1f08b | 81 | } |
MaxScorda | 7:f654d2b1f08b | 82 | |
MaxScorda | 7:f654d2b1f08b | 83 | if (modifica==true) { |
MaxScorda | 7:f654d2b1f08b | 84 | if (nummenu==0) { |
MaxScorda | 7:f654d2b1f08b | 85 | BSP_LCD_.SetFont(&Font12); |
MaxScorda | 7:f654d2b1f08b | 86 | BSP_LCD_SetTextColor(LCD_COLOR_WHITE); |
MaxScorda | 7:f654d2b1f08b | 87 | sprintf(str, "menu: %d", nummenu); |
MaxScorda | 7:f654d2b1f08b | 88 | } |
MaxScorda | 7:f654d2b1f08b | 89 | BSP_LCD_DisplayStringAt(50, LINE(7), (uint8_t *)str, LEFT_MODE); |
MaxScorda | 7:f654d2b1f08b | 90 | BSP_LCD_SetTextColor(LCD_COLOR_BLACK); |
MaxScorda | 7:f654d2b1f08b | 91 | BSP_LCD_FillRect(40+1, 45+1, DimX-80-1, DimY-45-45-1); //cancella corpo |
MaxScorda | 7:f654d2b1f08b | 92 | BSP_LCD_FillRect(DimX/3+6, 1, ((DimX*2)/3)-7, 38); //cancella titolo |
MaxScorda | 7:f654d2b1f08b | 93 | BSP_LCD_.SetFont(&Font24); |
MaxScorda | 7:f654d2b1f08b | 94 | BSP_LCD_SetTextColor(LCD_COLOR_YELLOW); |
MaxScorda | 7:f654d2b1f08b | 95 | switch (nummenu) { |
MaxScorda | 7:f654d2b1f08b | 96 | case 0: |
MaxScorda | 7:f654d2b1f08b | 97 | BSP_LCD_DisplayStringAt(DimX/3+10, 10, (uint8_t *) "Dati Generali", LEFT_MODE); |
MaxScorda | 7:f654d2b1f08b | 98 | break; |
MaxScorda | 7:f654d2b1f08b | 99 | case 1: |
MaxScorda | 7:f654d2b1f08b | 100 | BSP_LCD_DisplayStringAt(DimX/3+10, 10, (uint8_t *) "Math elaborations", LEFT_MODE); |
MaxScorda | 7:f654d2b1f08b | 101 | break; |
MaxScorda | 7:f654d2b1f08b | 102 | case 2: |
MaxScorda | 7:f654d2b1f08b | 103 | BSP_LCD_DisplayStringAt(DimX/3+10, 10, (uint8_t *) "Dati TCP", LEFT_MODE); |
MaxScorda | 7:f654d2b1f08b | 104 | break; |
MaxScorda | 7:f654d2b1f08b | 105 | } |
MaxScorda | 7:f654d2b1f08b | 106 | } |
MaxScorda | 7:f654d2b1f08b | 107 | } |
MaxScorda | 7:f654d2b1f08b | 108 | |
MaxScorda | 7:f654d2b1f08b | 109 | void GestioneTouch() |
MaxScorda | 7:f654d2b1f08b | 110 | { |
MaxScorda | 7:f654d2b1f08b | 111 | static uint16_t x=0, y=0; |
MaxScorda | 7:f654d2b1f08b | 112 | uint8_t cleared = 0; |
MaxScorda | 7:f654d2b1f08b | 113 | uint8_t prev_nb_touches = 0; |
MaxScorda | 7:f654d2b1f08b | 114 | BSP_TS_GetState(&TS_State); |
MaxScorda | 7:f654d2b1f08b | 115 | BSP_LCD_SetBackColor(LCD_COLOR_BLACK); |
MaxScorda | 7:f654d2b1f08b | 116 | BSP_LCD_SetTextColor(LCD_COLOR_WHITE); |
MaxScorda | 7:f654d2b1f08b | 117 | BSP_LCD_.SetFont(&Font16); |
MaxScorda | 7:f654d2b1f08b | 118 | if (TS_State.touchDetected) { |
MaxScorda | 7:f654d2b1f08b | 119 | // Clear lines corresponding to old touches coordinates |
MaxScorda | 7:f654d2b1f08b | 120 | if (TS_State.touchDetected < prev_nb_touches) { |
MaxScorda | 7:f654d2b1f08b | 121 | for (int idx = (TS_State.touchDetected + 1); idx <= 5; idx++) { |
MaxScorda | 7:f654d2b1f08b | 122 | BSP_LCD_ClearStringLine(idx); |
MaxScorda | 7:f654d2b1f08b | 123 | } |
MaxScorda | 7:f654d2b1f08b | 124 | } |
MaxScorda | 7:f654d2b1f08b | 125 | prev_nb_touches = TS_State.touchDetected; |
MaxScorda | 7:f654d2b1f08b | 126 | cleared = 0; |
MaxScorda | 7:f654d2b1f08b | 127 | sprintf(str, "Touches: %d", TS_State.touchDetected); |
MaxScorda | 7:f654d2b1f08b | 128 | BSP_LCD_DisplayStringAt(50, LINE(3), (uint8_t *)str, LEFT_MODE); |
MaxScorda | 7:f654d2b1f08b | 129 | SetLayer( 1); |
MaxScorda | 7:f654d2b1f08b | 130 | BSP_LCD_DrawPixel(x, y, LCD_COLOR_BLACK); |
MaxScorda | 7:f654d2b1f08b | 131 | SetLayer( 0); |
MaxScorda | 7:f654d2b1f08b | 132 | for (int idx = 0; idx < TS_State.touchDetected; idx++) { |
MaxScorda | 7:f654d2b1f08b | 133 | x = TS_State.touchX[idx]; |
MaxScorda | 7:f654d2b1f08b | 134 | y = TS_State.touchY[idx]; |
MaxScorda | 7:f654d2b1f08b | 135 | sprintf(str, "Touch %d: x=%d y=%d ", idx+1, x, y); |
MaxScorda | 7:f654d2b1f08b | 136 | BSP_LCD_DisplayStringAt(50, LINE(idx+4), (uint8_t *)str, LEFT_MODE); |
MaxScorda | 7:f654d2b1f08b | 137 | } |
MaxScorda | 7:f654d2b1f08b | 138 | SetLayer( 1); |
MaxScorda | 7:f654d2b1f08b | 139 | BSP_LCD_DrawPixel(TS_State.touchX[0], TS_State.touchY[0], LCD_COLOR_WHITE); |
MaxScorda | 7:f654d2b1f08b | 140 | SetLayer( 0); |
MaxScorda | 7:f654d2b1f08b | 141 | } else { |
MaxScorda | 7:f654d2b1f08b | 142 | if (!cleared) { |
MaxScorda | 7:f654d2b1f08b | 143 | sprintf(str, "Touches: 0"); |
MaxScorda | 7:f654d2b1f08b | 144 | BSP_LCD_DisplayStringAt(50, LINE(3), (uint8_t *)&str, LEFT_MODE); |
MaxScorda | 7:f654d2b1f08b | 145 | cleared = 1; |
MaxScorda | 7:f654d2b1f08b | 146 | } |
MaxScorda | 7:f654d2b1f08b | 147 | } |
MaxScorda | 7:f654d2b1f08b | 148 | } |
MaxScorda | 7:f654d2b1f08b | 149 | |
MaxScorda | 7:f654d2b1f08b | 150 | void PrintData(char sstr[],SocketAddress &clientaddr) |
MaxScorda | 7:f654d2b1f08b | 151 | { |
MaxScorda | 7:f654d2b1f08b | 152 | if ((nummenu==2) && (sstr[0]>0)) { |
MaxScorda | 7:f654d2b1f08b | 153 | BSP_LCD_.SetFont(&Font12); |
MaxScorda | 7:f654d2b1f08b | 154 | BSP_LCD_SetTextColor(LCD_COLOR_WHITE); |
MaxScorda | 7:f654d2b1f08b | 155 | BSP_LCD_DisplayStringAt(55, LINE(6), (uint8_t *) sstr, LEFT_MODE); |
MaxScorda | 7:f654d2b1f08b | 156 | const char *ip = clientaddr.get_ip_address(); |
MaxScorda | 7:f654d2b1f08b | 157 | int port = clientaddr.get_port(); |
MaxScorda | 7:f654d2b1f08b | 158 | sprintf(str,"IP Client: %s", ip); |
MaxScorda | 7:f654d2b1f08b | 159 | BSP_LCD_DisplayStringAt(55, LINE(10), (uint8_t *) str, LEFT_MODE); |
MaxScorda | 7:f654d2b1f08b | 160 | sprintf(str,"Port: %d", port); |
MaxScorda | 7:f654d2b1f08b | 161 | BSP_LCD_DisplayStringAt(55, LINE(11), (uint8_t *) str, LEFT_MODE); |
MaxScorda | 7:f654d2b1f08b | 162 | } |
MaxScorda | 7:f654d2b1f08b | 163 | } |
MaxScorda | 7:f654d2b1f08b | 164 | |
MaxScorda | 7:f654d2b1f08b | 165 | |
MaxScorda | 7:f654d2b1f08b | 166 | void ReceiveData(TCPSocket &clnt) |
MaxScorda | 7:f654d2b1f08b | 167 | { |
MaxScorda | 7:f654d2b1f08b | 168 | char mmm[64]; |
MaxScorda | 7:f654d2b1f08b | 169 | memset (str,0,128); |
MaxScorda | 7:f654d2b1f08b | 170 | clnt.recv(str, sizeof str); |
MaxScorda | 7:f654d2b1f08b | 171 | if (((nummenu==0)||(nummenu==2)) &&(str[0]>0)) { |
MaxScorda | 7:f654d2b1f08b | 172 | sprintf(mmm,"Receive: %d", millis()); |
MaxScorda | 7:f654d2b1f08b | 173 | BSP_LCD_.SetFont(&Font12); |
MaxScorda | 7:f654d2b1f08b | 174 | BSP_LCD_SetTextColor(LCD_COLOR_WHITE); |
MaxScorda | 7:f654d2b1f08b | 175 | BSP_LCD_DisplayStringAt(150, LINE(17), (uint8_t *) mmm, LEFT_MODE); |
MaxScorda | 7:f654d2b1f08b | 176 | } |
MaxScorda | 7:f654d2b1f08b | 177 | } |
MaxScorda | 7:f654d2b1f08b | 178 | |
MaxScorda | 7:f654d2b1f08b | 179 | void RoutineCiclicaSocket(TCPServer &srvR) |
MaxScorda | 7:f654d2b1f08b | 180 | { |
MaxScorda | 7:f654d2b1f08b | 181 | // se li lascio qui non bloccano ma sganciano |
MaxScorda | 7:f654d2b1f08b | 182 | // TCPSocket client; //lui |
MaxScorda | 7:f654d2b1f08b | 183 | // SocketAddress client_addr; |
MaxScorda | 7:f654d2b1f08b | 184 | // srvR.set_blocking(false); |
MaxScorda | 7:f654d2b1f08b | 185 | srvR.accept(&client, &client_addr); // BLOCCANTE senza srv.set_blocking(false); |
MaxScorda | 7:f654d2b1f08b | 186 | |
MaxScorda | 7:f654d2b1f08b | 187 | if ((nummenu==0)||(nummenu==2)) { |
MaxScorda | 7:f654d2b1f08b | 188 | sprintf(str,"Accept: %d", millis()); |
MaxScorda | 7:f654d2b1f08b | 189 | BSP_LCD_.SetFont(&Font12); |
MaxScorda | 7:f654d2b1f08b | 190 | BSP_LCD_SetTextColor(LCD_COLOR_WHITE); |
MaxScorda | 7:f654d2b1f08b | 191 | BSP_LCD_DisplayStringAt(50, LINE(17), (uint8_t *) str, LEFT_MODE); |
MaxScorda | 7:f654d2b1f08b | 192 | } |
MaxScorda | 7:f654d2b1f08b | 193 | |
MaxScorda | 7:f654d2b1f08b | 194 | ReceiveData(client); //2 |
MaxScorda | 7:f654d2b1f08b | 195 | PrintData(str,client_addr ); |
MaxScorda | 7:f654d2b1f08b | 196 | // client.close(); |
MaxScorda | 7:f654d2b1f08b | 197 | |
MaxScorda | 7:f654d2b1f08b | 198 | } |
MaxScorda | 7:f654d2b1f08b | 199 | |
MaxScorda | 7:f654d2b1f08b | 200 | void UsciteVideo() |
MaxScorda | 7:f654d2b1f08b | 201 | { |
MaxScorda | 7:f654d2b1f08b | 202 | char mmm[64]; |
MaxScorda | 7:f654d2b1f08b | 203 | |
MaxScorda | 7:f654d2b1f08b | 204 | GestioneButton(); //sempre |
MaxScorda | 7:f654d2b1f08b | 205 | if (nummenu==0) { |
MaxScorda | 7:f654d2b1f08b | 206 | GestioneTouch(); |
MaxScorda | 7:f654d2b1f08b | 207 | ReadSensors(); |
MaxScorda | 7:f654d2b1f08b | 208 | } |
MaxScorda | 7:f654d2b1f08b | 209 | // FattorizzazioneCiclica(); //1 |
MaxScorda | 7:f654d2b1f08b | 210 | |
MaxScorda | 7:f654d2b1f08b | 211 | sprintf(mmm,"Tick: %d", millis()); |
MaxScorda | 7:f654d2b1f08b | 212 | BSP_LCD_.SetFont(&Font12); |
MaxScorda | 7:f654d2b1f08b | 213 | BSP_LCD_SetTextColor(LCD_COLOR_WHITE); |
MaxScorda | 7:f654d2b1f08b | 214 | BSP_LCD_DisplayStringAt(350, LINE(17), (uint8_t *) mmm, LEFT_MODE); |
MaxScorda | 7:f654d2b1f08b | 215 | |
MaxScorda | 7:f654d2b1f08b | 216 | |
MaxScorda | 7:f654d2b1f08b | 217 | } |
MaxScorda | 7:f654d2b1f08b | 218 | |
MaxScorda | 7:f654d2b1f08b | 219 | |
MaxScorda | 7:f654d2b1f08b | 220 | #endif |