Smart coffee machine with facial recognition and remote control
Dependencies: Camera_LS_Y201 EthernetInterface EthernetNetIf HTTPClient SRF05 TextLCD mbed-rtos mbed-src
ecran_lcd.cpp
00001 #include "ecran_lcd.h" 00002 00003 TextLCD ecranLCD(p30, p26, p25, p27, p28, p29); // rs, e, d4-d7 00004 char message_ecran_1_haut[50], message_ecran_1_bas[50], message_ecran_2_haut[50], message_ecran_2_bas[50]; 00005 bool afficher_double_message, mettre_a_jour_ecran; 00006 00007 void thread_ecran(void const *args) 00008 { 00009 Timer t; 00010 mettre_a_jour_ecran = false; 00011 wait(1); 00012 00013 while(1) 00014 { 00015 if(mettre_a_jour_ecran) 00016 { 00017 ecranLCD.cls(); 00018 mettre_a_jour_ecran = false; 00019 00020 if(!afficher_double_message) 00021 { 00022 afficherSurUneLigne(message_ecran_1_haut, 1); 00023 afficherSurUneLigne(message_ecran_1_bas, 2); 00024 } 00025 00026 else 00027 { 00028 t.reset(); 00029 t.start(); 00030 bool mise_a_jour_1 = false, mise_a_jour_2 = false; 00031 00032 while(!mettre_a_jour_ecran) 00033 { 00034 if(t.read() < 1.5) 00035 { 00036 if(!mise_a_jour_1) 00037 { 00038 ecranLCD.cls(); 00039 afficherSurUneLigne(message_ecran_1_haut, 1); 00040 afficherSurUneLigne(message_ecran_1_bas, 2); 00041 mise_a_jour_1 = true; 00042 } 00043 } 00044 00045 else if(t.read() > 1.5*2) 00046 { 00047 t.reset(); 00048 mise_a_jour_1 = false; 00049 mise_a_jour_2 = false; 00050 } 00051 00052 else 00053 { 00054 if(!mise_a_jour_2) 00055 { 00056 ecranLCD.cls(); 00057 afficherSurUneLigne(message_ecran_2_haut, 1); 00058 afficherSurUneLigne(message_ecran_2_bas, 2); 00059 mise_a_jour_2 = true; 00060 } 00061 } 00062 } 00063 00064 t.stop(); 00065 } 00066 00067 } 00068 } 00069 } 00070 00071 void afficherSurUneLigne(const char* texte_brut, int ligne) 00072 { 00073 int i; 00074 char texte[17]; 00075 for(i = 0 ; i < 16 ; i ++) 00076 texte[i] = texte_brut[i]; 00077 00078 texte[i] = '\0'; 00079 00080 int nb_espaces_a_ajouter = (ecranLCD.columns() - strlen(texte)) / 2; 00081 00082 if(nb_espaces_a_ajouter < 0) 00083 nb_espaces_a_ajouter = 0; 00084 00085 ecranLCD.locate(nb_espaces_a_ajouter, ligne - 1); 00086 ecranLCD.printf(texte); 00087 00088 if(ligne == 1) 00089 printf("Affichage ecran : "); 00090 00091 printf("%s ", texte); 00092 00093 if(ligne == 2) 00094 printf("\n\r"); 00095 } 00096 00097 /* Surement deprecated */ 00098 void faireDefilerSurEcran(const char* texte, int vitesse) 00099 { 00100 int k = 0; 00101 00102 for(int i = 0 ; i < 999 ; i ++) 00103 { 00104 ecranLCD.cls(); 00105 00106 for(int j = 0 ; j < strlen(texte) - k ; j ++) 00107 ecranLCD.printf("%c", texte[k + j]); 00108 00109 for(int j = strlen(texte) - k ; j < 15 - k ; j ++) 00110 ecranLCD.printf(" "); 00111 00112 for(int j = 15 - k ; j < 15 ; j ++) 00113 ecranLCD.printf("%c", texte[j - (15 - k)]); 00114 00115 wait(0.3); 00116 00117 k ++; 00118 00119 if(k == 15) 00120 k = 0; 00121 } 00122 } 00123 00124 void afficherAuCentreDeLEcran(const char* texte_haut, const char* texte_bas) 00125 { 00126 sprintf(message_ecran_1_haut, "%s", texte_haut); 00127 sprintf(message_ecran_1_bas, "%s", texte_bas); 00128 sprintf(message_ecran_2_haut, ""); 00129 sprintf(message_ecran_2_bas, ""); 00130 afficher_double_message = false; 00131 mettre_a_jour_ecran = true; 00132 } 00133 00134 void afficherAuCentreDeLEcran(const char* texte_1_haut, const char* texte_1_bas, const char* texte_2_haut, const char* texte_2_bas) 00135 { 00136 sprintf(message_ecran_1_haut, "%s", texte_1_haut); 00137 sprintf(message_ecran_1_bas, "%s", texte_1_bas); 00138 sprintf(message_ecran_2_haut, "%s", texte_2_haut); 00139 sprintf(message_ecran_2_bas, "%s", texte_2_bas); 00140 afficher_double_message = true; 00141 mettre_a_jour_ecran = true; 00142 } 00143 00144 void afficherAuCentreDeLEcran(int nombre1, int nombre2) 00145 { 00146 char s1[20], s2[20]; 00147 sprintf(s1, "%i", nombre1); 00148 sprintf(s2, "%i", nombre2); 00149 afficherAuCentreDeLEcran(s1, s2); 00150 }
Generated on Wed Jul 13 2022 03:22:24 by 1.7.2