Marco Tulio Masselli Rainho Teixeira / Mbed 2 deprecated Nextion

Dependencies:   mbed

Committer:
marcotmrt
Date:
Tue Aug 02 17:29:59 2022 +0000
Revision:
0:fac9ca24c21e
nextion display

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcotmrt 0:fac9ca24c21e 1 #include "mbed.h"
marcotmrt 0:fac9ca24c21e 2
marcotmrt 0:fac9ca24c21e 3 //estabelece a porta serial nucleo - pc
marcotmrt 0:fac9ca24c21e 4 Serial pc(D1, D0, 115200); //tx, rx, baud
marcotmrt 0:fac9ca24c21e 5 // estabelece a porta serial nucleo - display
marcotmrt 0:fac9ca24c21e 6 Serial display(D8, D2, 9600); //tx, rx, baud
marcotmrt 0:fac9ca24c21e 7
marcotmrt 0:fac9ca24c21e 8 DigitalOut led1(D13);
marcotmrt 0:fac9ca24c21e 9
marcotmrt 0:fac9ca24c21e 10 // Declaracao das funcoes
marcotmrt 0:fac9ca24c21e 11 void Rx_interrupt();
marcotmrt 0:fac9ca24c21e 12 void SendText(char* page); //manda strings pela serial para o display
marcotmrt 0:fac9ca24c21e 13 void DisplayCircle(int x, int y);
marcotmrt 0:fac9ca24c21e 14 void DisplayProgressBar (int time);
marcotmrt 0:fac9ca24c21e 15 void DisplayXYZ(int x, int y, int z);
marcotmrt 0:fac9ca24c21e 16
marcotmrt 0:fac9ca24c21e 17 // declaracao de variaveis
marcotmrt 0:fac9ca24c21e 18 char rx_line;
marcotmrt 0:fac9ca24c21e 19 int estado = 0;
marcotmrt 0:fac9ca24c21e 20 int machine_xaxis_size = 1000;
marcotmrt 0:fac9ca24c21e 21 int machine_yaxis_size = 1000;
marcotmrt 0:fac9ca24c21e 22 int coleta_idx = 1; // indice do frasco atual (sendo selecionado)
marcotmrt 0:fac9ca24c21e 23 int volume = 0; // volume de trasferencia do frasco atual
marcotmrt 0:fac9ca24c21e 24 int tempo_dosagem = 2; // tempo real do ciclo em min
marcotmrt 0:fac9ca24c21e 25
marcotmrt 0:fac9ca24c21e 26 int x_percent;
marcotmrt 0:fac9ca24c21e 27 int y_percent;
marcotmrt 0:fac9ca24c21e 28 int z_percent;
marcotmrt 0:fac9ca24c21e 29 int x_relative;
marcotmrt 0:fac9ca24c21e 30 int y_relative;
marcotmrt 0:fac9ca24c21e 31 int x_cartesian;
marcotmrt 0:fac9ca24c21e 32 int y_cartesian;
marcotmrt 0:fac9ca24c21e 33 int z_cartesian;
marcotmrt 0:fac9ca24c21e 34
marcotmrt 0:fac9ca24c21e 35
marcotmrt 0:fac9ca24c21e 36 // main test program
marcotmrt 0:fac9ca24c21e 37 int main() {
marcotmrt 0:fac9ca24c21e 38
marcotmrt 0:fac9ca24c21e 39 // toda vez q chegar(Rx) info pela serial, execura a funcao interupt
marcotmrt 0:fac9ca24c21e 40 display.attach(&Rx_interrupt, Serial::RxIrq);
marcotmrt 0:fac9ca24c21e 41
marcotmrt 0:fac9ca24c21e 42 while(1)
marcotmrt 0:fac9ca24c21e 43 {
marcotmrt 0:fac9ca24c21e 44
marcotmrt 0:fac9ca24c21e 45 // --------- Tela 2 ------ acionada quando comeca a rotina de referenciamento
marcotmrt 0:fac9ca24c21e 46 // input
marcotmrt 0:fac9ca24c21e 47 while(estado == 2){
marcotmrt 0:fac9ca24c21e 48
marcotmrt 0:fac9ca24c21e 49 SendText("t1.txt=\"REFERENCIANDO EIXO X ...\"");
marcotmrt 0:fac9ca24c21e 50 wait(2);
marcotmrt 0:fac9ca24c21e 51 // funcao q referencia o x
marcotmrt 0:fac9ca24c21e 52
marcotmrt 0:fac9ca24c21e 53 SendText("t1.txt=\"REFERENCIANDO EIXO Y ...\"");
marcotmrt 0:fac9ca24c21e 54 // funcao q referencia o y
marcotmrt 0:fac9ca24c21e 55 wait(2);
marcotmrt 0:fac9ca24c21e 56
marcotmrt 0:fac9ca24c21e 57 SendText("t1.txt=\"REFERENCIANDO EIXO Z ...\"");
marcotmrt 0:fac9ca24c21e 58 // funcao q referencia o z
marcotmrt 0:fac9ca24c21e 59 wait(2);
marcotmrt 0:fac9ca24c21e 60
marcotmrt 0:fac9ca24c21e 61 SendText("page 3");
marcotmrt 0:fac9ca24c21e 62 estado = 3;
marcotmrt 0:fac9ca24c21e 63 }
marcotmrt 0:fac9ca24c21e 64
marcotmrt 0:fac9ca24c21e 65
marcotmrt 0:fac9ca24c21e 66 // ---------- Telas 4 ------- acionada quando comeca a rotina de Selecao da posicao de coleta
marcotmrt 0:fac9ca24c21e 67 // - coordenadas dos pontos-> passos do motor (n0, n1, n2) em tempo real
marcotmrt 0:fac9ca24c21e 68 // - desenhar o circulo na posicao de pega em tempo real
marcotmrt 0:fac9ca24c21e 69 while (estado == 4){
marcotmrt 0:fac9ca24c21e 70 //CircleXY(x, y, "RED"); // cria um circulo na posicao x y passada
marcotmrt 0:fac9ca24c21e 71 DisplayCircle(500,500);
marcotmrt 0:fac9ca24c21e 72 DisplayXYZ(500, 500, 500);
marcotmrt 0:fac9ca24c21e 73
marcotmrt 0:fac9ca24c21e 74 }
marcotmrt 0:fac9ca24c21e 75
marcotmrt 0:fac9ca24c21e 76 // --------- Tela 6 --------- selecao das posicoes de trasferencia
marcotmrt 0:fac9ca24c21e 77 // - coordenadas do joy stick (n0, n1, n2) em tempo real
marcotmrt 0:fac9ca24c21e 78 // - desenhar o circulo na posicao de pega em tempo real
marcotmrt 0:fac9ca24c21e 79 // - mandar variavel volume (b2, b3)
marcotmrt 0:fac9ca24c21e 80 if (estado == 6){
marcotmrt 0:fac9ca24c21e 81 char txt[100];
marcotmrt 0:fac9ca24c21e 82 sprintf(txt,"n3.val=%d",coleta_idx); // coloca o indice da posicao de coelta no display
marcotmrt 0:fac9ca24c21e 83 pc.printf(txt);
marcotmrt 0:fac9ca24c21e 84 SendText(txt);
marcotmrt 0:fac9ca24c21e 85 }
marcotmrt 0:fac9ca24c21e 86
marcotmrt 0:fac9ca24c21e 87 while (estado == 6){
marcotmrt 0:fac9ca24c21e 88
marcotmrt 0:fac9ca24c21e 89 DisplayCircle(500, 500);
marcotmrt 0:fac9ca24c21e 90 DisplayXYZ(500, 500, 500);
marcotmrt 0:fac9ca24c21e 91
marcotmrt 0:fac9ca24c21e 92 char txt[100];
marcotmrt 0:fac9ca24c21e 93 sprintf(txt,"n4.val=%d",volume); // coloca o indice da posicao de coelta no display
marcotmrt 0:fac9ca24c21e 94 pc.printf(txt);
marcotmrt 0:fac9ca24c21e 95 SendText(txt);
marcotmrt 0:fac9ca24c21e 96 wait(1);
marcotmrt 0:fac9ca24c21e 97
marcotmrt 0:fac9ca24c21e 98
marcotmrt 0:fac9ca24c21e 99 }
marcotmrt 0:fac9ca24c21e 100
marcotmrt 0:fac9ca24c21e 101
marcotmrt 0:fac9ca24c21e 102
marcotmrt 0:fac9ca24c21e 103 // ------- Tela 8 ---------- dosagem
marcotmrt 0:fac9ca24c21e 104 while(estado == 8) {
marcotmrt 0:fac9ca24c21e 105 wait(3);
marcotmrt 0:fac9ca24c21e 106 SendText("page 9");
marcotmrt 0:fac9ca24c21e 107 estado = 9;
marcotmrt 0:fac9ca24c21e 108
marcotmrt 0:fac9ca24c21e 109
marcotmrt 0:fac9ca24c21e 110 }
marcotmrt 0:fac9ca24c21e 111
marcotmrt 0:fac9ca24c21e 112
marcotmrt 0:fac9ca24c21e 113 // ------- Tela 9 ---------- fim
marcotmrt 0:fac9ca24c21e 114
marcotmrt 0:fac9ca24c21e 115 if (estado == 9) {
marcotmrt 0:fac9ca24c21e 116 char txt[50];
marcotmrt 0:fac9ca24c21e 117 wait(2);
marcotmrt 0:fac9ca24c21e 118 sprintf(txt,"n0.val=%d",tempo_dosagem);
marcotmrt 0:fac9ca24c21e 119 pc.printf(txt);
marcotmrt 0:fac9ca24c21e 120 SendText(txt);
marcotmrt 0:fac9ca24c21e 121 }
marcotmrt 0:fac9ca24c21e 122
marcotmrt 0:fac9ca24c21e 123
marcotmrt 0:fac9ca24c21e 124 }
marcotmrt 0:fac9ca24c21e 125
marcotmrt 0:fac9ca24c21e 126
marcotmrt 0:fac9ca24c21e 127 }
marcotmrt 0:fac9ca24c21e 128
marcotmrt 0:fac9ca24c21e 129
marcotmrt 0:fac9ca24c21e 130 // definicao das funcoes
marcotmrt 0:fac9ca24c21e 131
marcotmrt 0:fac9ca24c21e 132 void Rx_interrupt() // funcao que recebe os outputs dos botoes do display
marcotmrt 0:fac9ca24c21e 133 {
marcotmrt 0:fac9ca24c21e 134 led1=1;
marcotmrt 0:fac9ca24c21e 135 while(display.readable())
marcotmrt 0:fac9ca24c21e 136
marcotmrt 0:fac9ca24c21e 137 // Recebe o char do buffer usado pelo dispositivo "display"
marcotmrt 0:fac9ca24c21e 138 rx_line = display.getc();
marcotmrt 0:fac9ca24c21e 139 // Manda o char pela serial PC
marcotmrt 0:fac9ca24c21e 140 pc.putc(rx_line);
marcotmrt 0:fac9ca24c21e 141
marcotmrt 0:fac9ca24c21e 142 switch(rx_line)
marcotmrt 0:fac9ca24c21e 143 {
marcotmrt 0:fac9ca24c21e 144 case 'z':
marcotmrt 0:fac9ca24c21e 145 SendText("page 1");
marcotmrt 0:fac9ca24c21e 146 estado = 1;
marcotmrt 0:fac9ca24c21e 147 rx_line = 0x00;
marcotmrt 0:fac9ca24c21e 148 break;
marcotmrt 0:fac9ca24c21e 149
marcotmrt 0:fac9ca24c21e 150 case 'a':
marcotmrt 0:fac9ca24c21e 151 SendText("page 2");
marcotmrt 0:fac9ca24c21e 152 estado = 2;
marcotmrt 0:fac9ca24c21e 153 rx_line = 0x00;
marcotmrt 0:fac9ca24c21e 154 break;
marcotmrt 0:fac9ca24c21e 155
marcotmrt 0:fac9ca24c21e 156 case 'v':
marcotmrt 0:fac9ca24c21e 157 rx_line = 0x00;
marcotmrt 0:fac9ca24c21e 158 estado = 0;
marcotmrt 0:fac9ca24c21e 159 break;
marcotmrt 0:fac9ca24c21e 160
marcotmrt 0:fac9ca24c21e 161 case 'b':
marcotmrt 0:fac9ca24c21e 162 SendText("page 4");
marcotmrt 0:fac9ca24c21e 163 estado = 4;
marcotmrt 0:fac9ca24c21e 164 break;
marcotmrt 0:fac9ca24c21e 165
marcotmrt 0:fac9ca24c21e 166 case 'c':
marcotmrt 0:fac9ca24c21e 167 SendText("page 5");
marcotmrt 0:fac9ca24c21e 168 estado = 5;
marcotmrt 0:fac9ca24c21e 169 break;
marcotmrt 0:fac9ca24c21e 170
marcotmrt 0:fac9ca24c21e 171 case 'd':
marcotmrt 0:fac9ca24c21e 172 SendText("page 6");
marcotmrt 0:fac9ca24c21e 173 estado = 6;
marcotmrt 0:fac9ca24c21e 174 break;
marcotmrt 0:fac9ca24c21e 175
marcotmrt 0:fac9ca24c21e 176 case 'e': // Selecionar mais uma posicao de tranferencia
marcotmrt 0:fac9ca24c21e 177 SendText("page 6"); // recarrega a pagina -> zera os valores
marcotmrt 0:fac9ca24c21e 178 estado = 6;
marcotmrt 0:fac9ca24c21e 179 break;
marcotmrt 0:fac9ca24c21e 180
marcotmrt 0:fac9ca24c21e 181 case 'f': // Finalizar selecao das posicoes de tranferencia
marcotmrt 0:fac9ca24c21e 182 SendText("page 7"); // pagina pra comecar o processo de pipetagem
marcotmrt 0:fac9ca24c21e 183 estado = 7;
marcotmrt 0:fac9ca24c21e 184 break;
marcotmrt 0:fac9ca24c21e 185
marcotmrt 0:fac9ca24c21e 186 case 'g': // Aumenta 1ml no volume de transferencia
marcotmrt 0:fac9ca24c21e 187 volume ++;
marcotmrt 0:fac9ca24c21e 188 break;
marcotmrt 0:fac9ca24c21e 189
marcotmrt 0:fac9ca24c21e 190 case 'h': // Diminui 1ml no volume de transferencia
marcotmrt 0:fac9ca24c21e 191 volume --;
marcotmrt 0:fac9ca24c21e 192 break;
marcotmrt 0:fac9ca24c21e 193
marcotmrt 0:fac9ca24c21e 194 case 'i': // inicia a dosagem
marcotmrt 0:fac9ca24c21e 195 SendText("page 8"); // pagina pra comecar o processo de pipetagem
marcotmrt 0:fac9ca24c21e 196 estado=8;
marcotmrt 0:fac9ca24c21e 197 break;
marcotmrt 0:fac9ca24c21e 198
marcotmrt 0:fac9ca24c21e 199 case 'j': // Volta para intro_posicoinamento_pega
marcotmrt 0:fac9ca24c21e 200 SendText("page 3"); // pagina pra comecar o processo de pipetagem
marcotmrt 0:fac9ca24c21e 201 estado=3;
marcotmrt 0:fac9ca24c21e 202 break;
marcotmrt 0:fac9ca24c21e 203
marcotmrt 0:fac9ca24c21e 204 case 'k': // Volta para intro_dosagem
marcotmrt 0:fac9ca24c21e 205 SendText("page 7"); // pagina pra comecar o processo de pipetagem
marcotmrt 0:fac9ca24c21e 206 estado=7;
marcotmrt 0:fac9ca24c21e 207 break;
marcotmrt 0:fac9ca24c21e 208
marcotmrt 0:fac9ca24c21e 209
marcotmrt 0:fac9ca24c21e 210 default: rx_line=0x00;
marcotmrt 0:fac9ca24c21e 211
marcotmrt 0:fac9ca24c21e 212
marcotmrt 0:fac9ca24c21e 213 }
marcotmrt 0:fac9ca24c21e 214 led1=0;
marcotmrt 0:fac9ca24c21e 215 return;
marcotmrt 0:fac9ca24c21e 216 }
marcotmrt 0:fac9ca24c21e 217
marcotmrt 0:fac9ca24c21e 218
marcotmrt 0:fac9ca24c21e 219
marcotmrt 0:fac9ca24c21e 220
marcotmrt 0:fac9ca24c21e 221 void SendText(char* text){
marcotmrt 0:fac9ca24c21e 222
marcotmrt 0:fac9ca24c21e 223 display.printf(text);
marcotmrt 0:fac9ca24c21e 224 display.putc(0xFF);
marcotmrt 0:fac9ca24c21e 225 display.putc(0xFF);
marcotmrt 0:fac9ca24c21e 226 display.putc(0xFF);
marcotmrt 0:fac9ca24c21e 227 wait(0.05);
marcotmrt 0:fac9ca24c21e 228 }
marcotmrt 0:fac9ca24c21e 229
marcotmrt 0:fac9ca24c21e 230
marcotmrt 0:fac9ca24c21e 231 void DisplayCircle(int x, int y){
marcotmrt 0:fac9ca24c21e 232 char txt[100];
marcotmrt 0:fac9ca24c21e 233
marcotmrt 0:fac9ca24c21e 234 x_percent = x/machine_xaxis_size;
marcotmrt 0:fac9ca24c21e 235 y_percent = y/machine_yaxis_size;
marcotmrt 0:fac9ca24c21e 236
marcotmrt 0:fac9ca24c21e 237 x_relative = x_percent*(500-250) + 250;
marcotmrt 0:fac9ca24c21e 238 y_relative = y_percent*(372-132) + 133;
marcotmrt 0:fac9ca24c21e 239
marcotmrt 0:fac9ca24c21e 240 sprintf(txt,"cirs %d,%d,5,RED", x_relative, y_relative); //???????????????????????????????????????????????????????
marcotmrt 0:fac9ca24c21e 241 pc.printf(txt);
marcotmrt 0:fac9ca24c21e 242 SendText(txt);
marcotmrt 0:fac9ca24c21e 243 }
marcotmrt 0:fac9ca24c21e 244
marcotmrt 0:fac9ca24c21e 245 void DisplayXYZ(int x, int y, int z){
marcotmrt 0:fac9ca24c21e 246 char txt[100];
marcotmrt 0:fac9ca24c21e 247 x_percent = x/machine_xaxis_size;
marcotmrt 0:fac9ca24c21e 248 y_percent = y/machine_yaxis_size;
marcotmrt 0:fac9ca24c21e 249 y_percent = y/machine_yaxis_size;
marcotmrt 0:fac9ca24c21e 250
marcotmrt 0:fac9ca24c21e 251
marcotmrt 0:fac9ca24c21e 252 x_cartesian = x_percent*(10);
marcotmrt 0:fac9ca24c21e 253 y_cartesian = y_percent*(10);
marcotmrt 0:fac9ca24c21e 254 z_cartesian = z_percent*(10);
marcotmrt 0:fac9ca24c21e 255
marcotmrt 0:fac9ca24c21e 256 sprintf(txt,"n0.val=%d",x_cartesian);
marcotmrt 0:fac9ca24c21e 257 pc.printf(txt);
marcotmrt 0:fac9ca24c21e 258 SendText(txt);
marcotmrt 0:fac9ca24c21e 259
marcotmrt 0:fac9ca24c21e 260 sprintf(txt,"n1.val=%d",y_cartesian);
marcotmrt 0:fac9ca24c21e 261 pc.printf(txt);
marcotmrt 0:fac9ca24c21e 262 SendText(txt);
marcotmrt 0:fac9ca24c21e 263
marcotmrt 0:fac9ca24c21e 264 sprintf(txt,"n2.val=%d",z_cartesian);
marcotmrt 0:fac9ca24c21e 265 pc.printf(txt);
marcotmrt 0:fac9ca24c21e 266 SendText(txt);
marcotmrt 0:fac9ca24c21e 267 }
marcotmrt 0:fac9ca24c21e 268