
Projet Interfaçage
Dependencies: BSP_DISCO_F746NG
main.cpp
- Committer:
- liroy_theilor
- Date:
- 2021-06-23
- Revision:
- 6:c8fa01cd3dba
- Parent:
- 5:8ffa1e1d4895
File content as of revision 6:c8fa01cd3dba:
#include "mbed.h" #include "stm32746g_discovery_lcd.h" #include "stm32746g_discovery_ts.h" #include "mbed.h"// propre à mbed #include "stm32746g_discovery_lcd.h"// bibliothèque pour les fonctions de l’écran lcd #include "stm32746g_discovery_ts.h"// bibliothèque pour les fonctions de l’écran tactile char affiche[30]; int lecture; int compteur=0; bool obstak=false; int colis=0; void capteurTOR (); PwmOut servo(D1); // Servomoteur DigitalIn capteur(A0); // Capteur de lettre int main() { TS_StateTypeDef TS_State; uint16_t x, y; uint8_t text[30]; int i; char PSWD[4]; uint8_t status; uint8_t idx; uint8_t cleared = 0; uint8_t prev_nb_touches = 0; BSP_LCD_Init(); BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS); BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER); BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN DEMO", CENTER_MODE); HAL_Delay(1000); status = BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize()); if (status != TS_OK) { BSP_LCD_Clear(LCD_COLOR_RED); BSP_LCD_SetBackColor(LCD_COLOR_RED); BSP_LCD_SetTextColor(LCD_COLOR_WHITE); BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT FAIL", CENTER_MODE); } else { BSP_LCD_Clear(LCD_COLOR_GREEN); BSP_LCD_SetBackColor(LCD_COLOR_GREEN); BSP_LCD_SetTextColor(LCD_COLOR_WHITE); BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT OK", CENTER_MODE); } HAL_Delay(1000); BSP_LCD_SetFont(&Font12); //COULEUR DU FOND D'écran BSP_LCD_SetBackColor(LCD_COLOR_DARKCYAN); // COULEUR ECRITURE BSP_LCD_SetTextColor(LCD_COLOR_WHITE); BSP_LCD_Clear(LCD_COLOR_DARKCYAN ); //************INTERFACE************ sprintf((char*)text, "BOITES AUX LETTRES "); BSP_LCD_DisplayStringAt(20, LINE(1), (uint8_t *)&text, CENTER_MODE); sprintf((char*)text, "THEILOR LIROY "); BSP_LCD_DisplayStringAt(0, LINE(1), (uint8_t *)&text, RIGHT_MODE); BSP_LCD_SetFont(&Font16); sprintf((char*)text, "1"); BSP_LCD_DisplayStringAt(211, LINE(8), (uint8_t *)&text, LEFT_MODE); BSP_LCD_SetFont(&Font16); sprintf((char*)text, "2"); BSP_LCD_DisplayStringAt(25, LINE(8), (uint8_t *)&text, CENTER_MODE); BSP_LCD_SetFont(&Font16); sprintf((char*)text, "3"); BSP_LCD_DisplayStringAt(70, LINE(8), (uint8_t *)&text, CENTER_MODE); BSP_LCD_SetFont(&Font16); sprintf((char*)text, "4"); BSP_LCD_DisplayStringAt(211, LINE(11), (uint8_t *)&text, LEFT_MODE); BSP_LCD_SetFont(&Font16); sprintf((char*)text, "5"); BSP_LCD_DisplayStringAt(25, LINE(11), (uint8_t *)&text, CENTER_MODE); BSP_LCD_SetFont(&Font16); sprintf((char*)text, "6"); BSP_LCD_DisplayStringAt(70, LINE(11), (uint8_t *)&text, CENTER_MODE); BSP_LCD_SetFont(&Font16); sprintf((char*)text, "7"); BSP_LCD_DisplayStringAt(211, LINE(14), (uint8_t *)&text, LEFT_MODE); BSP_LCD_SetFont(&Font16); sprintf((char*)text, "8"); BSP_LCD_DisplayStringAt(25, LINE(14), (uint8_t *)&text, CENTER_MODE); BSP_LCD_SetFont(&Font16); sprintf((char*)text, "9"); BSP_LCD_DisplayStringAt(70, LINE(14), (uint8_t *)&text, CENTER_MODE); BSP_LCD_SetFont(&Font16); sprintf((char*)text, "0"); BSP_LCD_DisplayStringAt(18, LINE(16), (uint8_t *)&text, CENTER_MODE); BSP_LCD_SetTextColor(LCD_COLOR_ORANGE); //Position du cadre BSP_LCD_DrawRect(200, 60, 100 ,40); // CLAVIER // BSP_LCD_DrawRect(150, 150, 230,120); //LIGNE 1 BSP_LCD_DrawCircle(215, 140,20); BSP_LCD_DrawCircle(260, 140,20); BSP_LCD_DrawCircle(305, 140,20); // LIGNE 2 BSP_LCD_DrawCircle(215, 182,20); BSP_LCD_DrawCircle(260,182,20); BSP_LCD_DrawCircle(305, 182,20); // LIGNE 3 BSP_LCD_DrawCircle(215, 224,20); BSP_LCD_DrawCircle(260, 224,20); BSP_LCD_DrawCircle(305, 224,20); BSP_LCD_DrawRect(220, 249, 60,30); //************INTERFACE************ servo.pulsewidth_us (2000); while(1) { BSP_LCD_SetFont(&Font12); capteurTOR(); BSP_TS_GetState(&TS_State); if (TS_State.touchDetected) { // Clear lines corresponding to old touches coordinates if (TS_State.touchDetected < prev_nb_touches) { for (idx = (TS_State.touchDetected + 1); idx <= 5; idx++) { BSP_LCD_ClearStringLine(idx); } } prev_nb_touches = TS_State.touchDetected; cleared = 0; for (idx = 0; idx < TS_State.touchDetected; idx++) { x = TS_State.touchX[idx]; y = TS_State.touchY[idx]; } } else { if (!cleared) { cleared = 1; // TOUCHES 1 if ((x>= 195&& x<= 235) && (y>= 120 && y<= 160)) { sprintf((char*)text, "Touches: 1"); BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); PSWD[i]='1'; i++; } // TOUCHES 2 if ((x>= 240&& x<= 280) && (y>= 120 && y<= 160)) { sprintf((char*)text, "Touches: 2"); BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); PSWD[i]='2'; i++; } // TOUCHES 3 if ((x>= 285&& x<= 325) && (y>= 120 && y<= 160)) { sprintf((char*)text, "Touches: 3"); BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); PSWD[i]='3'; i++; } // TOUCHES 4 if ((x>= 195&& x<= 235) && (y>= 162 && y<= 202)) { sprintf((char*)text, "Touches: 4"); BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); PSWD[i]='4'; i++; } // TOUCHES 5 if ((x>= 240&& x<= 280) && (y>= 162 && y<= 202)) { sprintf((char*)text, "Touches: 5"); BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); PSWD[i]='5'; i++; } // TOUCHES 6 if ((x>= 289&& x<= 318) && (y>= 162&& y<= 202)) { sprintf((char*)text, "Touches: 6"); BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); PSWD[i]='6'; i++; } // TOUCHES 7 if ((x>= 195&& x<= 235) && (y>= 204 && y<= 244)) { sprintf((char*)text, "Touches: 7"); BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); PSWD[i]='7'; i++; colis++; } // TOUCHES 8 if ((x>= 240&& x<= 280) && (y>= 204 && y<= 244)) { sprintf((char*)text, "Touches: 8"); BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); PSWD[i]='8'; i++; } // TOUCHES 9 if ((x>= 285&& x<= 325) && (y>= 204&& y<= 244)) { sprintf((char*)text, "Touches: 9"); BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); PSWD[i]='9'; i++; } if ((x>= 220&& x<= 280) && (y>= 250&& y<= 270)) { sprintf((char*)text, "Touches: 0"); BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); PSWD[i]='0'; i++; } // CODE LETTRE if ((PSWD[0]=='2')&& (PSWD[1]=='6')&& (PSWD[2]=='0')&& (PSWD[3]=='5')) { sprintf((char*)text, "CODE BON"); BSP_LCD_DisplayStringAt(15, LINE(6), (uint8_t *)&text, CENTER_MODE); HAL_Delay(1000); servo.pulsewidth_us (1000); HAL_Delay(1000); i=0; } //code colis else if ((PSWD[0]=='4')&& (PSWD[1]=='3')&& (PSWD[2]=='2')&& (PSWD[3]=='1')) { colis++; sprintf((char*)text, "CODE BON"); BSP_LCD_DisplayStringAt(15, LINE(6), (uint8_t *)&text, CENTER_MODE); HAL_Delay(1000); servo.pulsewidth_us (1000); HAL_Delay(1000); i=0; } else if (i>=3) { BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); } sprintf((char*)text, "Nombre de colis: %d", colis); BSP_LCD_DisplayStringAt(0, LINE(10 ), (uint8_t *)&text, LEFT_MODE); compteur=0; if ((PSWD[0]=='1')&& (PSWD[1]=='2')&& (PSWD[2]=='3')&& (PSWD[3]=='4')) { sprintf((char*)text, "FERMETURE"); BSP_LCD_DisplayStringAt(15, LINE(6), (uint8_t *)&text, CENTER_MODE); HAL_Delay(1000); servo.pulsewidth_us (2000); HAL_Delay(1000); i=0; } } } } } void capteurTOR (void) { lecture =capteur.read(); switch(lecture) { case 0: // detection des lettres obstak=true; break; case 1: if (obstak==true) { obstak=false; compteur++; } break; } sprintf((char*)affiche, "Nombre de lettre : %d",compteur); BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)&affiche, LEFT_MODE); }