
Teste
Dependencies: BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG
main.cpp@1:a63eac8f5d0a, 2018-09-25 (annotated)
- Committer:
- fabiorangel
- Date:
- Tue Sep 25 19:33:43 2018 +0000
- Revision:
- 1:a63eac8f5d0a
- Parent:
- 0:eb8850f13a55
Teste
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fabiorangel | 0:eb8850f13a55 | 1 | #include "mbed.h" |
fabiorangel | 1:a63eac8f5d0a | 2 | #include "TS_DISCO_F746NG.h" |
fabiorangel | 1:a63eac8f5d0a | 3 | #include "LCD_DISCO_F746NG.h" |
fabiorangel | 1:a63eac8f5d0a | 4 | #include "EthernetInterface.h" |
fabiorangel | 1:a63eac8f5d0a | 5 | #include "TCPServer.h" |
fabiorangel | 1:a63eac8f5d0a | 6 | #include "TCPSocket.h" |
fabiorangel | 1:a63eac8f5d0a | 7 | #include <string> |
fabiorangel | 1:a63eac8f5d0a | 8 | |
fabiorangel | 1:a63eac8f5d0a | 9 | #define BTN_R1_X 60 //coordenada X do botão relé 1 |
fabiorangel | 1:a63eac8f5d0a | 10 | #define BTN_R1_Y 130 //coordenada Y do botão relé 1 |
fabiorangel | 1:a63eac8f5d0a | 11 | |
fabiorangel | 1:a63eac8f5d0a | 12 | #define BTN_WIDTH 150 //largura do botão dos relés |
fabiorangel | 1:a63eac8f5d0a | 13 | #define BTN_HEIGHT 75 //altura do botão dos relés |
fabiorangel | 1:a63eac8f5d0a | 14 | |
fabiorangel | 1:a63eac8f5d0a | 15 | #define BTN_R2_X 50 + (BTN_R1_X + BTN_WIDTH) //coordenada X do botão relé 2 |
fabiorangel | 1:a63eac8f5d0a | 16 | #define BTN_R2_Y 130 //coordenada Y do botão relé 1 |
fabiorangel | 1:a63eac8f5d0a | 17 | |
fabiorangel | 1:a63eac8f5d0a | 18 | LCD_DISCO_F746NG lcd; //objeto que controla o display |
fabiorangel | 1:a63eac8f5d0a | 19 | TS_DISCO_F746NG ts; //objeto que controla o touch do display |
fabiorangel | 1:a63eac8f5d0a | 20 | |
fabiorangel | 1:a63eac8f5d0a | 21 | TCPSocket *clt_sock; //ponteiro para um socket TCP |
fabiorangel | 1:a63eac8f5d0a | 22 | |
fabiorangel | 1:a63eac8f5d0a | 23 | //variáveis de controle de estado dos relés |
fabiorangel | 1:a63eac8f5d0a | 24 | bool btnRelay1 = false; |
fabiorangel | 1:a63eac8f5d0a | 25 | bool btnRelay2 = false; |
fabiorangel | 1:a63eac8f5d0a | 26 | |
fabiorangel | 1:a63eac8f5d0a | 27 | /* PROTÓTIPO DAS FUNÇÕES */ |
fabiorangel | 1:a63eac8f5d0a | 28 | //desenha um um botão na tela com uma escrita no meio |
fabiorangel | 1:a63eac8f5d0a | 29 | void drawButton(int x, int y, int width, int height, uint32_t color, char* title); |
fabiorangel | 1:a63eac8f5d0a | 30 | //verifica se ocorreu um toque na tela |
fabiorangel | 1:a63eac8f5d0a | 31 | void verifyTouch(int x, int y); |
fabiorangel | 1:a63eac8f5d0a | 32 | //verifica se o toque foi em algum dos botões |
fabiorangel | 1:a63eac8f5d0a | 33 | bool verifyTouchButton(int x, int y, int rectX, int rectY); |
fabiorangel | 1:a63eac8f5d0a | 34 | //envia um pacote de comandos para o client |
fabiorangel | 1:a63eac8f5d0a | 35 | bool sendPacket(char* packet); |
fabiorangel | 1:a63eac8f5d0a | 36 | //escreve na tela o status da conexão (client conectado ou desconectado) |
fabiorangel | 1:a63eac8f5d0a | 37 | void writeStatus(char* status, uint32_t color); |
fabiorangel | 1:a63eac8f5d0a | 38 | |
fabiorangel | 1:a63eac8f5d0a | 39 | |
fabiorangel | 1:a63eac8f5d0a | 40 | int main() |
fabiorangel | 1:a63eac8f5d0a | 41 | { |
fabiorangel | 1:a63eac8f5d0a | 42 | TS_StateTypeDef TS_State; //estado do touch |
fabiorangel | 1:a63eac8f5d0a | 43 | uint8_t status; |
fabiorangel | 0:eb8850f13a55 | 44 | |
fabiorangel | 1:a63eac8f5d0a | 45 | status = ts.Init(lcd.GetXSize(), lcd.GetYSize()); //inicializa o touch na tela toda |
fabiorangel | 1:a63eac8f5d0a | 46 | //se deu erro ao inicializar -> mensagem de falha e pára a execução do programa |
fabiorangel | 1:a63eac8f5d0a | 47 | if (status != TS_OK) { |
fabiorangel | 1:a63eac8f5d0a | 48 | lcd.Clear(LCD_COLOR_RED); |
fabiorangel | 1:a63eac8f5d0a | 49 | lcd.SetBackColor(LCD_COLOR_RED); |
fabiorangel | 1:a63eac8f5d0a | 50 | lcd.SetTextColor(LCD_COLOR_WHITE); |
fabiorangel | 1:a63eac8f5d0a | 51 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT FAIL", CENTER_MODE); |
fabiorangel | 1:a63eac8f5d0a | 52 | wait(2); |
fabiorangel | 1:a63eac8f5d0a | 53 | return 0; |
fabiorangel | 1:a63eac8f5d0a | 54 | } |
fabiorangel | 1:a63eac8f5d0a | 55 | |
fabiorangel | 1:a63eac8f5d0a | 56 | lcd.Clear(LCD_COLOR_BLUE); //limpa a tela e pinta de azul |
fabiorangel | 1:a63eac8f5d0a | 57 | lcd.SetBackColor(LCD_COLOR_BLUE); //cor de fundo de texto |
fabiorangel | 1:a63eac8f5d0a | 58 | lcd.SetTextColor(LCD_COLOR_YELLOW); //cor do texto |
fabiorangel | 1:a63eac8f5d0a | 59 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT OK", CENTER_MODE); |
fabiorangel | 1:a63eac8f5d0a | 60 | |
fabiorangel | 1:a63eac8f5d0a | 61 | |
fabiorangel | 1:a63eac8f5d0a | 62 | wait(1); //aguarda um segundo |
fabiorangel | 1:a63eac8f5d0a | 63 | lcd.Clear(LCD_COLOR_BLUE); //limpa a tela |
fabiorangel | 1:a63eac8f5d0a | 64 | lcd.SetTextColor(LCD_COLOR_WHITE); //seta cor do texto |
fabiorangel | 1:a63eac8f5d0a | 65 | lcd.SetFont(&Font24); //seta tamanho da fonte |
fabiorangel | 1:a63eac8f5d0a | 66 | lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"AUTOMATION", CENTER_MODE); |
fabiorangel | 1:a63eac8f5d0a | 67 | |
fabiorangel | 1:a63eac8f5d0a | 68 | lcd.DisplayStringAt(BTN_R1_X, LINE(4), (uint8_t *)"RELAY 1", LEFT_MODE); |
fabiorangel | 1:a63eac8f5d0a | 69 | lcd.DisplayStringAt(BTN_R2_X, LINE(4), (uint8_t *)"RELAY 2", LEFT_MODE); |
fabiorangel | 1:a63eac8f5d0a | 70 | |
fabiorangel | 1:a63eac8f5d0a | 71 | //cria os botões |
fabiorangel | 1:a63eac8f5d0a | 72 | drawButton(BTN_R1_X, BTN_R1_Y, BTN_WIDTH, BTN_HEIGHT, LCD_COLOR_RED, "OFF"); |
fabiorangel | 1:a63eac8f5d0a | 73 | drawButton(BTN_R2_X, BTN_R2_Y, BTN_WIDTH, BTN_HEIGHT, LCD_COLOR_RED, "OFF"); |
fabiorangel | 1:a63eac8f5d0a | 74 | |
fabiorangel | 1:a63eac8f5d0a | 75 | //objeto que controla a rede ethernet |
fabiorangel | 1:a63eac8f5d0a | 76 | EthernetInterface eth; |
fabiorangel | 1:a63eac8f5d0a | 77 | eth.connect(); //conecta à rede |
fabiorangel | 1:a63eac8f5d0a | 78 | |
fabiorangel | 1:a63eac8f5d0a | 79 | string ip = eth.get_ip_address(); //pega o IP recebido |
fabiorangel | 1:a63eac8f5d0a | 80 | lcd.SetBackColor(LCD_COLOR_BLUE); |
fabiorangel | 1:a63eac8f5d0a | 81 | lcd.SetFont(&Font8); |
fabiorangel | 1:a63eac8f5d0a | 82 | //verifica se o IP é válido |
fabiorangel | 1:a63eac8f5d0a | 83 | if(ip.length() <= 16 && ip.length() >= 7 ) { |
fabiorangel | 1:a63eac8f5d0a | 84 | uint8_t text[18]; |
fabiorangel | 1:a63eac8f5d0a | 85 | sprintf((char*)text, "%s", eth.get_ip_address()); |
fabiorangel | 1:a63eac8f5d0a | 86 | lcd.DisplayStringAt(0, LINE(1), (uint8_t *)&text, LEFT_MODE); //imprime na tela o IP |
fabiorangel | 1:a63eac8f5d0a | 87 | } else { |
fabiorangel | 1:a63eac8f5d0a | 88 | lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"IP Invalido", LEFT_MODE); |
fabiorangel | 1:a63eac8f5d0a | 89 | } |
fabiorangel | 1:a63eac8f5d0a | 90 | |
fabiorangel | 1:a63eac8f5d0a | 91 | |
fabiorangel | 1:a63eac8f5d0a | 92 | TCPServer srv; //objeto de controle do server |
fabiorangel | 0:eb8850f13a55 | 93 | |
fabiorangel | 1:a63eac8f5d0a | 94 | //abre um server na rede |
fabiorangel | 1:a63eac8f5d0a | 95 | srv.open(ð); |
fabiorangel | 1:a63eac8f5d0a | 96 | //configura a porta TCP 80 para o server |
fabiorangel | 1:a63eac8f5d0a | 97 | srv.bind(eth.get_ip_address(), 80); |
fabiorangel | 1:a63eac8f5d0a | 98 | /* Can handle 1 simultaneous connections */ |
fabiorangel | 1:a63eac8f5d0a | 99 | //aguarda uma única conexão |
fabiorangel | 1:a63eac8f5d0a | 100 | srv.listen(1); |
fabiorangel | 1:a63eac8f5d0a | 101 | |
fabiorangel | 0:eb8850f13a55 | 102 | while(1) { |
fabiorangel | 1:a63eac8f5d0a | 103 | writeStatus("Desconectado", LCD_COLOR_RED); //imprime o estado de desconectado |
fabiorangel | 1:a63eac8f5d0a | 104 | TCPSocket socket; //objeto TCPsocket |
fabiorangel | 1:a63eac8f5d0a | 105 | SocketAddress clt_addr; |
fabiorangel | 1:a63eac8f5d0a | 106 | clt_sock = &socket; |
fabiorangel | 1:a63eac8f5d0a | 107 | printf("waiting \n"); |
fabiorangel | 1:a63eac8f5d0a | 108 | //fica aguardando um client conectar |
fabiorangel | 1:a63eac8f5d0a | 109 | srv.accept(clt_sock, &clt_addr); |
fabiorangel | 1:a63eac8f5d0a | 110 | printf("accept %s:%d\n", clt_addr.get_ip_address(), clt_addr.get_port()); |
fabiorangel | 1:a63eac8f5d0a | 111 | |
fabiorangel | 1:a63eac8f5d0a | 112 | //char buffer[3]; |
fabiorangel | 1:a63eac8f5d0a | 113 | //int n = clt_sock->recv(buffer, sizeof(buffer)); |
fabiorangel | 1:a63eac8f5d0a | 114 | //printf("N : %d\n",n); |
fabiorangel | 1:a63eac8f5d0a | 115 | //buffer[n] = '\0'; |
fabiorangel | 1:a63eac8f5d0a | 116 | //printf("Received message from Client : %s\n",buffer); |
fabiorangel | 1:a63eac8f5d0a | 117 | |
fabiorangel | 1:a63eac8f5d0a | 118 | |
fabiorangel | 1:a63eac8f5d0a | 119 | writeStatus("Conectado", LCD_COLOR_GREEN); //imprime o estado de conectado |
fabiorangel | 1:a63eac8f5d0a | 120 | clt_sock->set_timeout(5000); //seta o timeout para o socket |
fabiorangel | 1:a63eac8f5d0a | 121 | //enquanto o socket estiver aberto |
fabiorangel | 1:a63eac8f5d0a | 122 | while(clt_sock != NULL) { |
fabiorangel | 1:a63eac8f5d0a | 123 | ts.GetState(&TS_State); //registra o estado do touch |
fabiorangel | 1:a63eac8f5d0a | 124 | //se algum toque na tela foi detectado |
fabiorangel | 1:a63eac8f5d0a | 125 | if (TS_State.touchDetected) { |
fabiorangel | 1:a63eac8f5d0a | 126 | uint8_t idx; |
fabiorangel | 1:a63eac8f5d0a | 127 | //ao tocar a tela, pode ser que múltiplos toques foram dados, portanto faremos uma verificação |
fabiorangel | 1:a63eac8f5d0a | 128 | for (idx = 0; idx < TS_State.touchDetected; idx++) { |
fabiorangel | 1:a63eac8f5d0a | 129 | //se o evento do toque foi PRESS |
fabiorangel | 1:a63eac8f5d0a | 130 | if(TS_State.touchEventId[idx] == TOUCH_EVENT_PRESS_DOWN) { |
fabiorangel | 1:a63eac8f5d0a | 131 | verifyTouch(TS_State.touchX[idx], TS_State.touchY[idx]);//verifica se tocou em algum botão |
fabiorangel | 1:a63eac8f5d0a | 132 | break; |
fabiorangel | 1:a63eac8f5d0a | 133 | }//if |
fabiorangel | 1:a63eac8f5d0a | 134 | }//for |
fabiorangel | 1:a63eac8f5d0a | 135 | }//if |
fabiorangel | 1:a63eac8f5d0a | 136 | }//while NULL |
fabiorangel | 1:a63eac8f5d0a | 137 | |
fabiorangel | 1:a63eac8f5d0a | 138 | }//while 1 |
fabiorangel | 1:a63eac8f5d0a | 139 | } |
fabiorangel | 1:a63eac8f5d0a | 140 | |
fabiorangel | 1:a63eac8f5d0a | 141 | //desenha um um botão na tela com uma escrita no meio |
fabiorangel | 1:a63eac8f5d0a | 142 | void drawButton(int x, int y, int width, int height, uint32_t color, char* title) |
fabiorangel | 1:a63eac8f5d0a | 143 | { |
fabiorangel | 1:a63eac8f5d0a | 144 | lcd.SetFont(&Font24); |
fabiorangel | 1:a63eac8f5d0a | 145 | lcd.SetTextColor(color); |
fabiorangel | 1:a63eac8f5d0a | 146 | lcd.SetBackColor(color); |
fabiorangel | 1:a63eac8f5d0a | 147 | lcd.FillRect(x, y, width, height); |
fabiorangel | 1:a63eac8f5d0a | 148 | lcd.SetTextColor(LCD_COLOR_WHITE); |
fabiorangel | 1:a63eac8f5d0a | 149 | uint8_t text[30]; |
fabiorangel | 1:a63eac8f5d0a | 150 | sprintf((char*)text, "%s", title); |
fabiorangel | 1:a63eac8f5d0a | 151 | lcd.DisplayStringAt(x+50, y+(height/2)-10, (uint8_t *)&text, LEFT_MODE); |
fabiorangel | 1:a63eac8f5d0a | 152 | } |
fabiorangel | 1:a63eac8f5d0a | 153 | |
fabiorangel | 1:a63eac8f5d0a | 154 | //verifica se ocorreu um toque na tela |
fabiorangel | 1:a63eac8f5d0a | 155 | void verifyTouch(int x, int y) |
fabiorangel | 1:a63eac8f5d0a | 156 | { |
fabiorangel | 1:a63eac8f5d0a | 157 | bool response = false; //guarda o status do envio da mensagem para o client |
fabiorangel | 1:a63eac8f5d0a | 158 | //verifica se tocou no botão do relé 1 |
fabiorangel | 1:a63eac8f5d0a | 159 | if( verifyTouchButton(x, y, BTN_R1_X, BTN_R1_Y) ) { |
fabiorangel | 1:a63eac8f5d0a | 160 | char* text; |
fabiorangel | 1:a63eac8f5d0a | 161 | uint32_t color; |
fabiorangel | 1:a63eac8f5d0a | 162 | //se o relé está ligado então desliga |
fabiorangel | 1:a63eac8f5d0a | 163 | if(btnRelay1) { |
fabiorangel | 1:a63eac8f5d0a | 164 | text = "OFF"; |
fabiorangel | 1:a63eac8f5d0a | 165 | color = LCD_COLOR_RED; |
fabiorangel | 1:a63eac8f5d0a | 166 | response = sendPacket("#R1|0"); //envia comando para desligar o relé |
fabiorangel | 1:a63eac8f5d0a | 167 | } else { |
fabiorangel | 1:a63eac8f5d0a | 168 | //se relé está desligado, então liga |
fabiorangel | 1:a63eac8f5d0a | 169 | text = "ON"; |
fabiorangel | 1:a63eac8f5d0a | 170 | color = LCD_COLOR_GREEN; |
fabiorangel | 1:a63eac8f5d0a | 171 | response = sendPacket("#R1|1");//envia comando para ligar o relé |
fabiorangel | 1:a63eac8f5d0a | 172 | } |
fabiorangel | 1:a63eac8f5d0a | 173 | //se o envio foi confirmado |
fabiorangel | 1:a63eac8f5d0a | 174 | if(response) { |
fabiorangel | 1:a63eac8f5d0a | 175 | drawButton(BTN_R1_X, BTN_R1_Y, BTN_WIDTH, BTN_HEIGHT, color, text); //atualiza o botão |
fabiorangel | 1:a63eac8f5d0a | 176 | btnRelay1 = !btnRelay1; |
fabiorangel | 1:a63eac8f5d0a | 177 | } |
fabiorangel | 1:a63eac8f5d0a | 178 | |
fabiorangel | 1:a63eac8f5d0a | 179 | } |
fabiorangel | 1:a63eac8f5d0a | 180 | //verifica se tocou no botão do relé 1 |
fabiorangel | 1:a63eac8f5d0a | 181 | else if( verifyTouchButton(x,y,BTN_R2_X,BTN_R2_Y) ) { |
fabiorangel | 1:a63eac8f5d0a | 182 | char* text; |
fabiorangel | 1:a63eac8f5d0a | 183 | uint32_t color; |
fabiorangel | 1:a63eac8f5d0a | 184 | //se o relé está ligado então desliga |
fabiorangel | 1:a63eac8f5d0a | 185 | if(btnRelay2) { |
fabiorangel | 1:a63eac8f5d0a | 186 | text = "OFF"; |
fabiorangel | 1:a63eac8f5d0a | 187 | color = LCD_COLOR_RED; |
fabiorangel | 1:a63eac8f5d0a | 188 | response = sendPacket("#R2|0"); //envia comando para desligar o relé |
fabiorangel | 1:a63eac8f5d0a | 189 | } else { |
fabiorangel | 1:a63eac8f5d0a | 190 | //se relé está desligado, então liga |
fabiorangel | 1:a63eac8f5d0a | 191 | text = "ON"; |
fabiorangel | 1:a63eac8f5d0a | 192 | color = LCD_COLOR_GREEN; |
fabiorangel | 1:a63eac8f5d0a | 193 | response = sendPacket("#R2|1");//envia comando para ligar o relé |
fabiorangel | 1:a63eac8f5d0a | 194 | |
fabiorangel | 1:a63eac8f5d0a | 195 | } |
fabiorangel | 1:a63eac8f5d0a | 196 | //se o envio foi confirmado |
fabiorangel | 1:a63eac8f5d0a | 197 | if(response) { |
fabiorangel | 1:a63eac8f5d0a | 198 | drawButton(BTN_R2_X, BTN_R2_Y, BTN_WIDTH, BTN_HEIGHT, color, text);//atualiza o botão |
fabiorangel | 1:a63eac8f5d0a | 199 | btnRelay2 = !btnRelay2; |
fabiorangel | 1:a63eac8f5d0a | 200 | } |
fabiorangel | 0:eb8850f13a55 | 201 | } |
fabiorangel | 0:eb8850f13a55 | 202 | } |
fabiorangel | 1:a63eac8f5d0a | 203 | |
fabiorangel | 1:a63eac8f5d0a | 204 | //verifica se o toque foi em algum dos botões |
fabiorangel | 1:a63eac8f5d0a | 205 | bool verifyTouchButton(int x, int y, int rectX, int rectY) |
fabiorangel | 1:a63eac8f5d0a | 206 | { |
fabiorangel | 1:a63eac8f5d0a | 207 | printf("tocou : %d,%d %d,%d\n",x,y,rectX,rectY); |
fabiorangel | 1:a63eac8f5d0a | 208 | if( (x >= rectX) && (x <= rectX + BTN_WIDTH) ) { |
fabiorangel | 1:a63eac8f5d0a | 209 | if( (y >= rectY) && (y <= rectY + BTN_HEIGHT) ) |
fabiorangel | 1:a63eac8f5d0a | 210 | return true; |
fabiorangel | 1:a63eac8f5d0a | 211 | } |
fabiorangel | 1:a63eac8f5d0a | 212 | return false; |
fabiorangel | 1:a63eac8f5d0a | 213 | } |
fabiorangel | 1:a63eac8f5d0a | 214 | |
fabiorangel | 1:a63eac8f5d0a | 215 | //envia um pacote de comandos para o client |
fabiorangel | 1:a63eac8f5d0a | 216 | bool sendPacket(char* packet) |
fabiorangel | 1:a63eac8f5d0a | 217 | { |
fabiorangel | 1:a63eac8f5d0a | 218 | char buffer[256]; |
fabiorangel | 1:a63eac8f5d0a | 219 | clt_sock->send(packet, strlen(packet)); //envia o comando |
fabiorangel | 1:a63eac8f5d0a | 220 | int n = clt_sock->recv(buffer, sizeof(buffer)); //aguarda confirmação |
fabiorangel | 1:a63eac8f5d0a | 221 | printf("N : %d\n",n); |
fabiorangel | 1:a63eac8f5d0a | 222 | //se não chegou bytes então client não recebeu o pacote |
fabiorangel | 1:a63eac8f5d0a | 223 | if (n <= 0) { |
fabiorangel | 1:a63eac8f5d0a | 224 | clt_sock->close(); //fecha o socket |
fabiorangel | 1:a63eac8f5d0a | 225 | clt_sock = NULL; |
fabiorangel | 1:a63eac8f5d0a | 226 | return false; |
fabiorangel | 1:a63eac8f5d0a | 227 | } |
fabiorangel | 1:a63eac8f5d0a | 228 | // print received message to terminal |
fabiorangel | 1:a63eac8f5d0a | 229 | buffer[n] = '\0'; |
fabiorangel | 1:a63eac8f5d0a | 230 | printf("Received message from Client : %s\n",buffer); |
fabiorangel | 1:a63eac8f5d0a | 231 | return true; |
fabiorangel | 1:a63eac8f5d0a | 232 | } |
fabiorangel | 1:a63eac8f5d0a | 233 | |
fabiorangel | 1:a63eac8f5d0a | 234 | //escreve na tela o status da conexão (client conectado ou desconectado) |
fabiorangel | 1:a63eac8f5d0a | 235 | void writeStatus(char* status, uint32_t color) |
fabiorangel | 1:a63eac8f5d0a | 236 | { |
fabiorangel | 1:a63eac8f5d0a | 237 | lcd.SetTextColor(color); |
fabiorangel | 1:a63eac8f5d0a | 238 | lcd.SetBackColor(LCD_COLOR_BLUE); |
fabiorangel | 1:a63eac8f5d0a | 239 | lcd.SetFont(&Font16); |
fabiorangel | 1:a63eac8f5d0a | 240 | lcd.ClearStringLine(16); //limpa a linha que escreveremos |
fabiorangel | 1:a63eac8f5d0a | 241 | uint8_t text[30]; |
fabiorangel | 1:a63eac8f5d0a | 242 | sprintf((char*)text, "%s", status); |
fabiorangel | 1:a63eac8f5d0a | 243 | lcd.DisplayStringAtLine(16, (uint8_t *)&text); |
fabiorangel | 1:a63eac8f5d0a | 244 | } |
fabiorangel | 1:a63eac8f5d0a | 245 | |
fabiorangel | 1:a63eac8f5d0a | 246 | |
fabiorangel | 1:a63eac8f5d0a | 247 | |
fabiorangel | 1:a63eac8f5d0a | 248 |