Código para o menu no LCD

Dependencies:   mbed SDFileSystemSD TextLCD

Fork of TextLCD_HelloWorld2 by Wim Huiskamp

Committer:
claraluques
Date:
Thu May 17 22:38:03 2018 +0000
Revision:
27:83d2a710cc2f
Parent:
26:59081efdce79
Child:
28:b3c51076ebe8
estamos com as telas de espera do programa funcionando, por?m nos prints nao pode ter wait.; ; criar variavel de tempo para contar

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lucasfontenla 17:0b8e489fac36 1 #define tx PC_10
lucasfontenla 17:0b8e489fac36 2 #define rx PC_11
lucasfontenla 17:0b8e489fac36 3
lucasfontenla 17:0b8e489fac36 4 Serial Mach(tx, rx);
claraluques 19:2c890ae2d187 5 //SDFileSystem sd(PB_5, PB_4, PB_3, PB_10, "sd"); //MOSI - D4, MISO - D5, SCLK - D3, CS - D6
lucasfontenla 17:0b8e489fac36 6
lucasfontenla 17:0b8e489fac36 7 class Machine {
lucasfontenla 17:0b8e489fac36 8 int n;
lucasfontenla 17:0b8e489fac36 9 string buffer;
lucasfontenla 17:0b8e489fac36 10 char buffer_char[2];
lucasfontenla 17:0b8e489fac36 11
lucasfontenla 17:0b8e489fac36 12 public:
lucasfontenla 17:0b8e489fac36 13 int debug;
lucasfontenla 17:0b8e489fac36 14
lucasfontenla 17:0b8e489fac36 15 // PUBLIC FUNCTIONS ----------------------------------------------------------------------------------------------------------------------------------------
lucasfontenla 17:0b8e489fac36 16 void move_to(float x, float y, float z, string type, int speed){
lucasfontenla 17:0b8e489fac36 17
lucasfontenla 17:0b8e489fac36 18 }
lucasfontenla 17:0b8e489fac36 19
lucasfontenla 17:0b8e489fac36 20 void move(int x_axis, int y_axis, int z_axis, float pct_speed){
lucasfontenla 17:0b8e489fac36 21 buffer = "";
lucasfontenla 17:0b8e489fac36 22
lucasfontenla 17:0b8e489fac36 23 buffer.append("f");
lucasfontenla 17:0b8e489fac36 24
lucasfontenla 17:0b8e489fac36 25 //buffer.append("X");
lucasfontenla 17:0b8e489fac36 26 n = sprintf(buffer_char, "%d", x_axis);
lucasfontenla 17:0b8e489fac36 27 buffer.append(buffer_char);
lucasfontenla 17:0b8e489fac36 28
lucasfontenla 17:0b8e489fac36 29 //buffer.append("Y");
lucasfontenla 17:0b8e489fac36 30 n = sprintf(buffer_char, "%d", y_axis);
lucasfontenla 17:0b8e489fac36 31 buffer.append(buffer_char);
lucasfontenla 17:0b8e489fac36 32
lucasfontenla 17:0b8e489fac36 33 //buffer.append("Z");
lucasfontenla 17:0b8e489fac36 34 n = sprintf(buffer_char, "%d", z_axis);
lucasfontenla 17:0b8e489fac36 35 buffer.append(buffer_char);
lucasfontenla 17:0b8e489fac36 36
lucasfontenla 17:0b8e489fac36 37 buffer.append("F");
lucasfontenla 17:0b8e489fac36 38 n = sprintf(buffer_char, "%.2f", pct_speed);
lucasfontenla 17:0b8e489fac36 39 buffer.append(buffer_char);
lucasfontenla 17:0b8e489fac36 40
lucasfontenla 17:0b8e489fac36 41 send(buffer);
lucasfontenla 17:0b8e489fac36 42 }
lucasfontenla 17:0b8e489fac36 43
lucasfontenla 17:0b8e489fac36 44 void save_point(int mode, float pct_speed){
lucasfontenla 17:0b8e489fac36 45 buffer = "";
lucasfontenla 17:0b8e489fac36 46
lucasfontenla 17:0b8e489fac36 47 buffer.append("s");
lucasfontenla 17:0b8e489fac36 48
lucasfontenla 17:0b8e489fac36 49 n = sprintf(buffer_char, "M%d", mode);
lucasfontenla 17:0b8e489fac36 50 buffer.append(buffer_char);
lucasfontenla 17:0b8e489fac36 51
lucasfontenla 17:0b8e489fac36 52 n = sprintf(buffer_char, "F%.2f", pct_speed);
lucasfontenla 17:0b8e489fac36 53 buffer.append(buffer_char);
lucasfontenla 17:0b8e489fac36 54
lucasfontenla 17:0b8e489fac36 55 send(buffer);
lucasfontenla 17:0b8e489fac36 56 }
lucasfontenla 17:0b8e489fac36 57
lucasfontenla 17:0b8e489fac36 58 void start_program(void){
claraluques 20:ccbd80b668ce 59 send("b");
claraluques 20:ccbd80b668ce 60 printf("b\n\r");
lucasfontenla 17:0b8e489fac36 61 }
lucasfontenla 17:0b8e489fac36 62
lucasfontenla 17:0b8e489fac36 63 void cancel_program(void){
lucasfontenla 17:0b8e489fac36 64 send("c");
lucasfontenla 17:0b8e489fac36 65 }
lucasfontenla 17:0b8e489fac36 66
lucasfontenla 17:0b8e489fac36 67 void get_status(void){
lucasfontenla 17:0b8e489fac36 68 send("s");
lucasfontenla 17:0b8e489fac36 69 }
lucasfontenla 17:0b8e489fac36 70
lucasfontenla 17:0b8e489fac36 71 void machine_zero(void){
claraluques 26:59081efdce79 72 send("zm");
lucasfontenla 17:0b8e489fac36 73 }
lucasfontenla 17:0b8e489fac36 74
lucasfontenla 17:0b8e489fac36 75 void set_zero(string axis){
claraluques 27:83d2a710cc2f 76 buffer = "";
lucasfontenla 17:0b8e489fac36 77 buffer.append("z");
lucasfontenla 17:0b8e489fac36 78 buffer+=axis;
lucasfontenla 17:0b8e489fac36 79 send(buffer);
lucasfontenla 17:0b8e489fac36 80 }
lucasfontenla 17:0b8e489fac36 81
claraluques 19:2c890ae2d187 82 void jog(void){
claraluques 19:2c890ae2d187 83 send("j");
claraluques 20:ccbd80b668ce 84 printf("j\n\r");
claraluques 19:2c890ae2d187 85 }
claraluques 19:2c890ae2d187 86
claraluques 20:ccbd80b668ce 87 void kill_jog(void){
claraluques 20:ccbd80b668ce 88 send("jk");
claraluques 20:ccbd80b668ce 89 printf("jk\n\r");
claraluques 20:ccbd80b668ce 90 }
claraluques 20:ccbd80b668ce 91
claraluques 26:59081efdce79 92 void reset (void){
claraluques 26:59081efdce79 93 send("r");
claraluques 26:59081efdce79 94 }
claraluques 26:59081efdce79 95
claraluques 20:ccbd80b668ce 96
lucasfontenla 17:0b8e489fac36 97 private:
lucasfontenla 17:0b8e489fac36 98
lucasfontenla 17:0b8e489fac36 99 // PRIVATE FUNCTIONS ----------------------------------------------------------------------------------------------------------------------------------------
lucasfontenla 17:0b8e489fac36 100 void send(string msg){
lucasfontenla 17:0b8e489fac36 101 msg.append("x");
lucasfontenla 17:0b8e489fac36 102
lucasfontenla 17:0b8e489fac36 103 for(int i = 0; i < msg.length(); i++){
lucasfontenla 17:0b8e489fac36 104 Mach.putc(msg[i]);
claraluques 20:ccbd80b668ce 105 wait_ms(20);
lucasfontenla 17:0b8e489fac36 106 }
lucasfontenla 17:0b8e489fac36 107 }
claraluques 18:5338b83b4de9 108 };
claraluques 18:5338b83b4de9 109
claraluques 18:5338b83b4de9 110
claraluques 18:5338b83b4de9 111 //criar classe "menu" (funções para as telas)
claraluques 18:5338b83b4de9 112 class Menu{
claraluques 19:2c890ae2d187 113
claraluques 19:2c890ae2d187 114 Machine machine;
claraluques 18:5338b83b4de9 115 public:
claraluques 18:5338b83b4de9 116 int linha;
claraluques 18:5338b83b4de9 117 int func;
claraluques 23:19c67758032d 118
claraluques 18:5338b83b4de9 119
claraluques 18:5338b83b4de9 120 void movercursor(int min, int max, int col){ //função para mover cursor de seleção
claraluques 18:5338b83b4de9 121 linha = min;
claraluques 18:5338b83b4de9 122 lcd.locate(col,min);
claraluques 18:5338b83b4de9 123 lcd.printf("%c", 0x3E);
claraluques 18:5338b83b4de9 124 while (bot_enter==penter){
claraluques 18:5338b83b4de9 125 if (bot_cima==1){
claraluques 18:5338b83b4de9 126 if (linha==min){
claraluques 18:5338b83b4de9 127 lcd.locate(col,min);
claraluques 18:5338b83b4de9 128 lcd.printf(" ");
claraluques 18:5338b83b4de9 129 linha=max;
claraluques 18:5338b83b4de9 130 lcd.locate(col, linha);
claraluques 18:5338b83b4de9 131 lcd.printf("%c", 0x3E);
claraluques 18:5338b83b4de9 132 }
claraluques 18:5338b83b4de9 133 else {
claraluques 18:5338b83b4de9 134 lcd.locate(col,linha);
claraluques 18:5338b83b4de9 135 lcd.printf(" ");
claraluques 18:5338b83b4de9 136 linha--;
claraluques 18:5338b83b4de9 137 lcd.locate(col, linha);
claraluques 18:5338b83b4de9 138 lcd.printf("%c", 0x3E);
claraluques 18:5338b83b4de9 139 }
claraluques 18:5338b83b4de9 140 bot_cima = 0;
claraluques 18:5338b83b4de9 141 }
claraluques 18:5338b83b4de9 142 else if (bot_baixo==1){
claraluques 18:5338b83b4de9 143 if (linha==max){
claraluques 18:5338b83b4de9 144 lcd.locate(col,max);
claraluques 18:5338b83b4de9 145 lcd.printf(" ");
claraluques 18:5338b83b4de9 146 linha=min;
claraluques 18:5338b83b4de9 147 lcd.locate(col, linha);
claraluques 18:5338b83b4de9 148 lcd.printf("%c", 0x3E);
claraluques 18:5338b83b4de9 149 }
claraluques 18:5338b83b4de9 150 else {
claraluques 18:5338b83b4de9 151 lcd.locate(col,linha);
claraluques 18:5338b83b4de9 152 lcd.printf(" ");
claraluques 18:5338b83b4de9 153 linha++;
claraluques 18:5338b83b4de9 154 lcd.locate(col, linha);
claraluques 18:5338b83b4de9 155 lcd.printf("%c", 0x3E);
claraluques 18:5338b83b4de9 156 }
claraluques 18:5338b83b4de9 157 bot_baixo = 0;
claraluques 18:5338b83b4de9 158 }
claraluques 26:59081efdce79 159 //função para printar as coordenadas nas telas 2 e 8
claraluques 19:2c890ae2d187 160 else if (func==2 || func==8){
claraluques 26:59081efdce79 161 //x
claraluques 26:59081efdce79 162 if (cx<=-1 && cx>=-9){
claraluques 26:59081efdce79 163 lcd.locate(2,1);
claraluques 27:83d2a710cc2f 164 lcd.printf(" %.2f ", cx);
claraluques 26:59081efdce79 165 }
claraluques 26:59081efdce79 166 if (cx<=-10 && cx>=-99){
claraluques 26:59081efdce79 167 lcd.locate(2,1);
claraluques 27:83d2a710cc2f 168 lcd.printf(" %.2f ", cx);
claraluques 26:59081efdce79 169 }
claraluques 26:59081efdce79 170 if (cx<=-100){
claraluques 26:59081efdce79 171 lcd.locate(2,1);
claraluques 27:83d2a710cc2f 172 lcd.printf("%.2f ", cx);
claraluques 25:af1f99666ca9 173 }
claraluques 26:59081efdce79 174 if (cx<=9 && cx>=0){
claraluques 25:af1f99666ca9 175 lcd.locate(2,1);
claraluques 27:83d2a710cc2f 176 lcd.printf(" %.2f ", cx);
claraluques 25:af1f99666ca9 177 }
claraluques 25:af1f99666ca9 178 if (cx>=10 && cx<=99){
claraluques 25:af1f99666ca9 179 lcd.locate(2,1);
claraluques 27:83d2a710cc2f 180 lcd.printf(" %.2f ", cx);
claraluques 25:af1f99666ca9 181 }
claraluques 25:af1f99666ca9 182 if (cx>=100){
claraluques 25:af1f99666ca9 183 lcd.locate(2,1);
claraluques 27:83d2a710cc2f 184 lcd.printf(" %.2f ", cx);
claraluques 25:af1f99666ca9 185 }
claraluques 26:59081efdce79 186 //y
claraluques 26:59081efdce79 187 if (cy<=-1 && cy>=-9){
claraluques 26:59081efdce79 188 lcd.locate(2,2);
claraluques 27:83d2a710cc2f 189 lcd.printf(" %.2f ", cy);
claraluques 26:59081efdce79 190 }
claraluques 26:59081efdce79 191 if (cy<=-10 && cx>=-99){
claraluques 26:59081efdce79 192 lcd.locate(2,2);
claraluques 27:83d2a710cc2f 193 lcd.printf(" %.2f ", cy);
claraluques 26:59081efdce79 194 }
claraluques 26:59081efdce79 195 if (cy<=-100){
claraluques 26:59081efdce79 196 lcd.locate(2,2);
claraluques 27:83d2a710cc2f 197 lcd.printf("%.2f ", cy);
claraluques 25:af1f99666ca9 198 }
claraluques 26:59081efdce79 199 if (cy<=9 && cy>=0){
claraluques 25:af1f99666ca9 200 lcd.locate(2,2);
claraluques 27:83d2a710cc2f 201 lcd.printf(" %.2f ", cy);
claraluques 25:af1f99666ca9 202 }
claraluques 25:af1f99666ca9 203 if (cy>=10 && cx<=99){
claraluques 25:af1f99666ca9 204 lcd.locate(2,2);
claraluques 27:83d2a710cc2f 205 lcd.printf(" %.2f ", cy);
claraluques 25:af1f99666ca9 206 }
claraluques 25:af1f99666ca9 207 if (cy>=100){
claraluques 25:af1f99666ca9 208 lcd.locate(2,2);
claraluques 27:83d2a710cc2f 209 lcd.printf(" %.2f ", cy);
claraluques 25:af1f99666ca9 210 }
claraluques 26:59081efdce79 211 //z
claraluques 26:59081efdce79 212 if (cz<=-1 && cz>=-9){
claraluques 26:59081efdce79 213 lcd.locate(2,3);
claraluques 27:83d2a710cc2f 214 lcd.printf(" %.2f ", cz);
claraluques 26:59081efdce79 215 }
claraluques 26:59081efdce79 216 if (cz<=-10 && cx>=-99){
claraluques 26:59081efdce79 217 lcd.locate(2,3);
claraluques 27:83d2a710cc2f 218 lcd.printf(" %.2f ", cz);
claraluques 26:59081efdce79 219 }
claraluques 26:59081efdce79 220 if (cz<=-100){
claraluques 26:59081efdce79 221 lcd.locate(2,3);
claraluques 27:83d2a710cc2f 222 lcd.printf("%.2f ", cz);
claraluques 26:59081efdce79 223 }
claraluques 26:59081efdce79 224 if (cz<=9 && cz>=0){
claraluques 25:af1f99666ca9 225 lcd.locate(2,3);
claraluques 27:83d2a710cc2f 226 lcd.printf(" %.2f ", cz);
claraluques 25:af1f99666ca9 227 }
claraluques 25:af1f99666ca9 228 if (cz>=10 && cx<=99){
claraluques 25:af1f99666ca9 229 lcd.locate(2,3);
claraluques 27:83d2a710cc2f 230 lcd.printf(" %.2f ", cz);
claraluques 25:af1f99666ca9 231 }
claraluques 25:af1f99666ca9 232 if (cz>=100){
claraluques 25:af1f99666ca9 233 lcd.locate(2,3);
claraluques 27:83d2a710cc2f 234 lcd.printf(" %.2f ", cz);
claraluques 25:af1f99666ca9 235 }
claraluques 26:59081efdce79 236 } //até aqui, para alinhar os números
lucasfontenla 22:22ddb0b21d48 237 if (Mach.readable()){
claraluques 21:7603fe283ba4 238 readSerial();
claraluques 21:7603fe283ba4 239 }
claraluques 18:5338b83b4de9 240 }
claraluques 26:59081efdce79 241
claraluques 18:5338b83b4de9 242 }
claraluques 18:5338b83b4de9 243
claraluques 18:5338b83b4de9 244 //func 0
claraluques 18:5338b83b4de9 245 void inicializar(){ //função tela incial de boas-vindas
claraluques 26:59081efdce79 246 machine.reset();
claraluques 18:5338b83b4de9 247 lcd.cls();
claraluques 18:5338b83b4de9 248 lcd.locate(4,0);
claraluques 18:5338b83b4de9 249 lcd.printf("Bem-vindo(a)");
claraluques 18:5338b83b4de9 250 lcd.locate(0,1);
claraluques 18:5338b83b4de9 251 lcd.printf("Utilize seu EPI para operar a maquina.");
claraluques 18:5338b83b4de9 252 wait(1);
claraluques 18:5338b83b4de9 253 func = 1;
claraluques 18:5338b83b4de9 254 }
claraluques 18:5338b83b4de9 255
claraluques 18:5338b83b4de9 256 //func 1
claraluques 18:5338b83b4de9 257 void menuprincipal(){ //função menu principal
claraluques 18:5338b83b4de9 258 bot_enter = 0;
claraluques 18:5338b83b4de9 259 lcd.cls();
claraluques 18:5338b83b4de9 260 lcd.locate(1,0);
claraluques 18:5338b83b4de9 261 lcd.printf("Modo JOG");
claraluques 18:5338b83b4de9 262 lcd.locate(1,1);
claraluques 18:5338b83b4de9 263 lcd.printf("Modo Automatico");
claraluques 18:5338b83b4de9 264 lcd.locate(1,2);
claraluques 26:59081efdce79 265 lcd.printf("Zerar");
claraluques 18:5338b83b4de9 266 lcd.locate(1,3);
claraluques 26:59081efdce79 267 lcd.printf("Config");
claraluques 18:5338b83b4de9 268 movercursor(0,3,0);
claraluques 18:5338b83b4de9 269 if (bot_enter!=penter){
claraluques 18:5338b83b4de9 270 if (linha==0){
claraluques 18:5338b83b4de9 271 func = 2;
claraluques 18:5338b83b4de9 272 }
claraluques 18:5338b83b4de9 273 else if (linha==1) {
claraluques 18:5338b83b4de9 274 func = 3;
claraluques 18:5338b83b4de9 275 }
claraluques 18:5338b83b4de9 276 else if (linha==2) {
claraluques 26:59081efdce79 277 func = 8;
claraluques 18:5338b83b4de9 278 }
claraluques 18:5338b83b4de9 279 else if (linha==3) {
claraluques 26:59081efdce79 280 func = 4;
claraluques 18:5338b83b4de9 281 }
claraluques 18:5338b83b4de9 282 }
claraluques 18:5338b83b4de9 283 }
claraluques 18:5338b83b4de9 284
claraluques 18:5338b83b4de9 285 //func 2
claraluques 18:5338b83b4de9 286 void jog(){ //função tela jog
claraluques 18:5338b83b4de9 287 bot_enter = 0;
claraluques 20:ccbd80b668ce 288 machine.kill_jog();
claraluques 20:ccbd80b668ce 289 wait(0.1);
claraluques 19:2c890ae2d187 290 machine.jog();
claraluques 18:5338b83b4de9 291 lcd.cls();
claraluques 18:5338b83b4de9 292 lcd.locate(4,0);
claraluques 18:5338b83b4de9 293 lcd.printf("Coordenadas:");
claraluques 18:5338b83b4de9 294 lcd.locate(0,1);
claraluques 18:5338b83b4de9 295 lcd.printf("X:");
claraluques 18:5338b83b4de9 296 lcd.locate(0,2);
claraluques 18:5338b83b4de9 297 lcd.printf("Y:");
claraluques 18:5338b83b4de9 298 lcd.locate(0,3);
claraluques 18:5338b83b4de9 299 lcd.printf("Z:");
claraluques 18:5338b83b4de9 300 lcd.locate(11,1);
claraluques 18:5338b83b4de9 301 lcd.printf("Salvar");
claraluques 18:5338b83b4de9 302 lcd.locate(11,2);
claraluques 18:5338b83b4de9 303 lcd.printf("Concluir");
claraluques 18:5338b83b4de9 304 lcd.locate(11,3);
claraluques 18:5338b83b4de9 305 lcd.printf("Cancelar");
claraluques 19:2c890ae2d187 306 movercursor(1,3,10);
claraluques 18:5338b83b4de9 307 if (bot_enter!=penter){
claraluques 20:ccbd80b668ce 308 if (linha==1){
claraluques 26:59081efdce79 309 if (pontos==0 && maxpontos>=1){
claraluques 26:59081efdce79 310 cx_salva = 0;
claraluques 26:59081efdce79 311 cy_salva = 0;
claraluques 26:59081efdce79 312 cz_salva = 0;
claraluques 26:59081efdce79 313 pontos++;
claraluques 26:59081efdce79 314 maxpontos--;
claraluques 26:59081efdce79 315 func = 5;
claraluques 26:59081efdce79 316 }
claraluques 26:59081efdce79 317 else if (pontos>=1 && maxpontos>=1){
claraluques 18:5338b83b4de9 318 cx_salva = cx;
claraluques 18:5338b83b4de9 319 cy_salva = cy;
claraluques 18:5338b83b4de9 320 cz_salva = cz;
claraluques 26:59081efdce79 321 pontos++;
claraluques 26:59081efdce79 322 maxpontos--;
claraluques 18:5338b83b4de9 323 func = 5;
claraluques 18:5338b83b4de9 324 }
claraluques 26:59081efdce79 325 else if (maxpontos==0){
claraluques 18:5338b83b4de9 326 func = 16;
claraluques 18:5338b83b4de9 327 }
claraluques 18:5338b83b4de9 328 }
claraluques 18:5338b83b4de9 329 else if (linha==2) {
claraluques 27:83d2a710cc2f 330 machine.kill_jog();
claraluques 26:59081efdce79 331 func = 17;
claraluques 18:5338b83b4de9 332 }
claraluques 18:5338b83b4de9 333 else if (linha==3) {
claraluques 20:ccbd80b668ce 334 machine.kill_jog();
claraluques 26:59081efdce79 335 wait(0.1);
claraluques 26:59081efdce79 336 machine.cancel_program();
claraluques 18:5338b83b4de9 337 func = 1;
claraluques 18:5338b83b4de9 338 pontos = 10;
claraluques 18:5338b83b4de9 339 }
claraluques 18:5338b83b4de9 340 }
claraluques 18:5338b83b4de9 341 }
claraluques 18:5338b83b4de9 342
claraluques 18:5338b83b4de9 343 //func 3
claraluques 18:5338b83b4de9 344 void automatico(){ //tela modo automatico
claraluques 18:5338b83b4de9 345 lcd.cls();
claraluques 18:5338b83b4de9 346 bot_enter = 0;
claraluques 18:5338b83b4de9 347 lcd.printf("Modo automatico");
claraluques 18:5338b83b4de9 348 lcd.locate(7,2);
claraluques 18:5338b83b4de9 349 lcd.printf("OK");
claraluques 18:5338b83b4de9 350 lcd.locate(7,3);
claraluques 18:5338b83b4de9 351 lcd.printf("Voltar");
claraluques 18:5338b83b4de9 352 movercursor(2,3,6);
claraluques 18:5338b83b4de9 353 if (bot_enter!=penter) {
claraluques 18:5338b83b4de9 354 if (linha==2){
claraluques 18:5338b83b4de9 355 func = 12;
claraluques 18:5338b83b4de9 356 }
claraluques 18:5338b83b4de9 357 else if (linha==3){
claraluques 18:5338b83b4de9 358 func = 1;
claraluques 18:5338b83b4de9 359 }
claraluques 18:5338b83b4de9 360 }
claraluques 18:5338b83b4de9 361 }
claraluques 18:5338b83b4de9 362
claraluques 18:5338b83b4de9 363 //func 4
claraluques 18:5338b83b4de9 364 void config() {
claraluques 18:5338b83b4de9 365 lcd.cls();
claraluques 18:5338b83b4de9 366 bot_enter = 0;
claraluques 27:83d2a710cc2f 367 //printf("%d,tela\n\r", penter);
claraluques 18:5338b83b4de9 368 lcd.locate(1,0);
claraluques 18:5338b83b4de9 369 lcd.printf("Definir velocidade");
claraluques 18:5338b83b4de9 370 lcd.locate(1,1);
claraluques 18:5338b83b4de9 371 lcd.printf("Limpar seringa cola");
claraluques 18:5338b83b4de9 372 lcd.locate(1,2);
claraluques 26:59081efdce79 373 lcd.printf("Origem maquina");
claraluques 18:5338b83b4de9 374 lcd.locate(1,3);
claraluques 18:5338b83b4de9 375 lcd.printf("Voltar");
claraluques 18:5338b83b4de9 376 movercursor(0,3,0);
claraluques 18:5338b83b4de9 377 if (bot_enter!=penter){
claraluques 18:5338b83b4de9 378 if (linha==0) {
claraluques 18:5338b83b4de9 379 func = 13;
claraluques 18:5338b83b4de9 380 }
claraluques 18:5338b83b4de9 381 else if (linha==1) {
claraluques 18:5338b83b4de9 382 func = 14;
claraluques 18:5338b83b4de9 383 }
claraluques 18:5338b83b4de9 384 else if (linha==2) {
claraluques 27:83d2a710cc2f 385 home = 1;
claraluques 27:83d2a710cc2f 386 func = 18;
claraluques 18:5338b83b4de9 387 }
claraluques 18:5338b83b4de9 388 else if (linha==3) {
claraluques 18:5338b83b4de9 389 func = 1;
claraluques 18:5338b83b4de9 390 }
claraluques 18:5338b83b4de9 391 }
claraluques 18:5338b83b4de9 392 }
claraluques 18:5338b83b4de9 393
claraluques 18:5338b83b4de9 394 //func 5
claraluques 18:5338b83b4de9 395 void telasalvamento(){ //função para quando salvar um ponto
claraluques 18:5338b83b4de9 396 lcd.cls();
claraluques 18:5338b83b4de9 397 lcd.locate(0,0);
claraluques 18:5338b83b4de9 398 lcd.printf("Voce salvou");
claraluques 18:5338b83b4de9 399 lcd.locate(1,1);
claraluques 25:af1f99666ca9 400 lcd.printf("X:%.2f ", cx_salva);
claraluques 18:5338b83b4de9 401 lcd.locate(1,2);
claraluques 25:af1f99666ca9 402 lcd.printf("Y:%.2f ", cy_salva);
claraluques 18:5338b83b4de9 403 lcd.locate(1,3);
claraluques 25:af1f99666ca9 404 lcd.printf("Z:%.2f ", cz_salva);
claraluques 18:5338b83b4de9 405 lcd.locate(13,1);
claraluques 18:5338b83b4de9 406 lcd.printf("Pontos");
claraluques 18:5338b83b4de9 407 lcd.locate(13,2);
claraluques 18:5338b83b4de9 408 lcd.printf("livres");
claraluques 18:5338b83b4de9 409 lcd.locate(16,3);
claraluques 26:59081efdce79 410 lcd.printf("%d", maxpontos);
claraluques 18:5338b83b4de9 411 wait(1);
claraluques 18:5338b83b4de9 412 if (pontos>0){
claraluques 18:5338b83b4de9 413 func = 6;
claraluques 18:5338b83b4de9 414 }
claraluques 18:5338b83b4de9 415 else if (pontos==0){
claraluques 18:5338b83b4de9 416 func = 2;
claraluques 18:5338b83b4de9 417 }
claraluques 18:5338b83b4de9 418 }
claraluques 18:5338b83b4de9 419
claraluques 18:5338b83b4de9 420 //func 6
claraluques 18:5338b83b4de9 421 void telacola(){ //tela para escolher o tipo de sequencia da cola
claraluques 18:5338b83b4de9 422 lcd.cls();
claraluques 18:5338b83b4de9 423 bot_enter = 0;
claraluques 18:5338b83b4de9 424 lcd.printf("P/ o proximo ponto:");
claraluques 18:5338b83b4de9 425 lcd.locate(3,1);
claraluques 18:5338b83b4de9 426 lcd.printf("Sem cola");
claraluques 18:5338b83b4de9 427 lcd.locate(3,2);
claraluques 18:5338b83b4de9 428 lcd.printf("Cola no ponto");
claraluques 18:5338b83b4de9 429 lcd.locate(3,3);
claraluques 18:5338b83b4de9 430 lcd.printf("Cola continua");
claraluques 18:5338b83b4de9 431 movercursor(1,3,2);
claraluques 18:5338b83b4de9 432 if (bot_enter!=penter){
claraluques 18:5338b83b4de9 433 if (linha==1){
claraluques 18:5338b83b4de9 434 cola = 0;
claraluques 18:5338b83b4de9 435 func = 2;
claraluques 18:5338b83b4de9 436 }
claraluques 18:5338b83b4de9 437 else if (linha==2) {
claraluques 18:5338b83b4de9 438 cola = 1;
claraluques 18:5338b83b4de9 439 func = 2;
claraluques 18:5338b83b4de9 440 }
claraluques 18:5338b83b4de9 441 else if (linha==3) {
claraluques 18:5338b83b4de9 442 cola = 2;
claraluques 18:5338b83b4de9 443 func = 2;
claraluques 18:5338b83b4de9 444 }
claraluques 20:ccbd80b668ce 445 machine.save_point(cola,2);
claraluques 18:5338b83b4de9 446 }
claraluques 18:5338b83b4de9 447 }
claraluques 18:5338b83b4de9 448
claraluques 18:5338b83b4de9 449 //func 7
claraluques 18:5338b83b4de9 450 void executarprograma() { //tela para selecionar se deseja executar o programa
claraluques 18:5338b83b4de9 451 lcd.cls();
claraluques 18:5338b83b4de9 452 bot_enter = 0;
claraluques 18:5338b83b4de9 453 lcd.locate(2,0);
claraluques 18:5338b83b4de9 454 lcd.printf("VOCE CONCLUIU SEU");
claraluques 18:5338b83b4de9 455 lcd.locate(5,1);
claraluques 18:5338b83b4de9 456 lcd.printf("PROGRAMA.");
claraluques 18:5338b83b4de9 457 lcd.locate(0,2);
claraluques 18:5338b83b4de9 458 lcd.printf("Deseja");
claraluques 18:5338b83b4de9 459 lcd.locate(0,3);
claraluques 18:5338b83b4de9 460 lcd.printf("executa-lo?");
claraluques 18:5338b83b4de9 461 lcd.locate(14,2);
claraluques 18:5338b83b4de9 462 lcd.printf("Sim");
claraluques 18:5338b83b4de9 463 lcd.locate(14,3);
claraluques 18:5338b83b4de9 464 lcd.printf("Voltar");
claraluques 18:5338b83b4de9 465 movercursor(2,3,13);
claraluques 18:5338b83b4de9 466 if (bot_enter!=penter) {
claraluques 18:5338b83b4de9 467 if (linha==2){
claraluques 21:7603fe283ba4 468 machine.kill_jog();
claraluques 21:7603fe283ba4 469 wait(0.1);
claraluques 27:83d2a710cc2f 470 //machine.start_program();
claraluques 18:5338b83b4de9 471 exec = 1;
claraluques 18:5338b83b4de9 472 func = 9;
claraluques 18:5338b83b4de9 473 }
claraluques 18:5338b83b4de9 474 else if (linha==3){
claraluques 18:5338b83b4de9 475 exec = 0;
claraluques 18:5338b83b4de9 476 func = 2;
claraluques 18:5338b83b4de9 477 }
claraluques 18:5338b83b4de9 478 }
claraluques 18:5338b83b4de9 479 }
claraluques 18:5338b83b4de9 480
claraluques 18:5338b83b4de9 481 //func 8
claraluques 18:5338b83b4de9 482 void telazerar(){ //tela para zerar a máquina
claraluques 18:5338b83b4de9 483 lcd.cls();
claraluques 18:5338b83b4de9 484 bot_enter = 0;
claraluques 26:59081efdce79 485 machine.kill_jog();
claraluques 26:59081efdce79 486 machine.jog();
claraluques 18:5338b83b4de9 487 lcd.locate(2,0);
claraluques 19:2c890ae2d187 488 lcd.printf("Zerar:");
claraluques 19:2c890ae2d187 489 lcd.locate(0,1);
claraluques 19:2c890ae2d187 490 lcd.printf("X:");
claraluques 19:2c890ae2d187 491 lcd.locate(0,2);
claraluques 19:2c890ae2d187 492 lcd.printf("Y:");
claraluques 19:2c890ae2d187 493 lcd.locate(0,3);
claraluques 19:2c890ae2d187 494 lcd.printf("Z:");
claraluques 19:2c890ae2d187 495 lcd.locate(13,0);
claraluques 19:2c890ae2d187 496 lcd.printf("X");
claraluques 19:2c890ae2d187 497 lcd.locate(13,1);
claraluques 19:2c890ae2d187 498 lcd.printf("Y");
claraluques 19:2c890ae2d187 499 lcd.locate(13,2);
claraluques 19:2c890ae2d187 500 lcd.printf("Z");
claraluques 19:2c890ae2d187 501 lcd.locate(13,3);
claraluques 19:2c890ae2d187 502 lcd.printf("Voltar");
claraluques 19:2c890ae2d187 503 movercursor(0,3,12);
claraluques 18:5338b83b4de9 504 if (bot_enter!=penter) {
claraluques 19:2c890ae2d187 505 if (linha==0){
claraluques 18:5338b83b4de9 506 cx = 0;
claraluques 19:2c890ae2d187 507 func = 10;
claraluques 19:2c890ae2d187 508 machine.set_zero("X");
claraluques 19:2c890ae2d187 509 }
claraluques 19:2c890ae2d187 510 else if (linha==1){
claraluques 18:5338b83b4de9 511 cy = 0;
claraluques 19:2c890ae2d187 512 func = 10;
claraluques 19:2c890ae2d187 513 machine.set_zero("Y");
claraluques 19:2c890ae2d187 514 }
claraluques 19:2c890ae2d187 515 else if (linha==2){
claraluques 18:5338b83b4de9 516 cz = 0;
claraluques 18:5338b83b4de9 517 func = 10;
claraluques 19:2c890ae2d187 518 machine.set_zero("Z");
claraluques 18:5338b83b4de9 519 }
claraluques 18:5338b83b4de9 520 else if (linha==3){
claraluques 18:5338b83b4de9 521 func = 1;
claraluques 26:59081efdce79 522 machine.kill_jog();
claraluques 18:5338b83b4de9 523 }
claraluques 18:5338b83b4de9 524 }
claraluques 18:5338b83b4de9 525 }
claraluques 18:5338b83b4de9 526
claraluques 18:5338b83b4de9 527 //func 9
claraluques 18:5338b83b4de9 528 void executando(){ //tela de executando
claraluques 18:5338b83b4de9 529 lcd.cls();
claraluques 27:83d2a710cc2f 530 machine.start_program();
claraluques 18:5338b83b4de9 531 lcd.locate(4,1);
claraluques 18:5338b83b4de9 532 lcd.printf("Executando");
claraluques 27:83d2a710cc2f 533 while (exec == 1){
claraluques 27:83d2a710cc2f 534 if (Mach.readable()){
claraluques 27:83d2a710cc2f 535 readSerial();
claraluques 27:83d2a710cc2f 536 }/*
claraluques 18:5338b83b4de9 537 lcd.locate(14,1);
claraluques 18:5338b83b4de9 538 lcd.printf(". ");
claraluques 18:5338b83b4de9 539 wait(0.5);
claraluques 18:5338b83b4de9 540 lcd.locate(14,1);
claraluques 18:5338b83b4de9 541 lcd.printf(".. ");
claraluques 18:5338b83b4de9 542 wait(0.5);
claraluques 18:5338b83b4de9 543 lcd.locate(14,1);
claraluques 18:5338b83b4de9 544 lcd.printf("...");
claraluques 18:5338b83b4de9 545 wait(0.5);
claraluques 18:5338b83b4de9 546 lcd.locate(14,1);
claraluques 18:5338b83b4de9 547 lcd.printf(" ");
claraluques 27:83d2a710cc2f 548 wait(0.5);*/
claraluques 18:5338b83b4de9 549 }
claraluques 27:83d2a710cc2f 550 printf("saiu\n\r");
claraluques 27:83d2a710cc2f 551 func = 11;
claraluques 18:5338b83b4de9 552 }
claraluques 18:5338b83b4de9 553
claraluques 18:5338b83b4de9 554 //func 10
claraluques 18:5338b83b4de9 555 void zerado() { //tela avisando que a máquina foi zerada
claraluques 18:5338b83b4de9 556 lcd.cls();
claraluques 18:5338b83b4de9 557 lcd.locate(5,1);
claraluques 18:5338b83b4de9 558 lcd.printf("Voce zerou");
claraluques 19:2c890ae2d187 559 lcd.locate(6,2);
claraluques 19:2c890ae2d187 560 lcd.printf("o eixo!");
claraluques 18:5338b83b4de9 561 wait(1);
claraluques 18:5338b83b4de9 562 func = 8;
claraluques 18:5338b83b4de9 563 }
claraluques 18:5338b83b4de9 564
claraluques 18:5338b83b4de9 565 //func 11
claraluques 18:5338b83b4de9 566 void finalizado() { //tela aviso programa finalizado
claraluques 18:5338b83b4de9 567 lcd.cls();
claraluques 18:5338b83b4de9 568 lcd.locate(6,1);
claraluques 18:5338b83b4de9 569 lcd.printf("PROGRAMA");
claraluques 18:5338b83b4de9 570 lcd.locate(5,2);
claraluques 18:5338b83b4de9 571 lcd.printf("FINALIZADO");
claraluques 18:5338b83b4de9 572 wait(1);
claraluques 18:5338b83b4de9 573 func = 1;
claraluques 18:5338b83b4de9 574 }
claraluques 18:5338b83b4de9 575
claraluques 18:5338b83b4de9 576 //func 12
claraluques 18:5338b83b4de9 577
claraluques 18:5338b83b4de9 578 //func 13
claraluques 18:5338b83b4de9 579
claraluques 18:5338b83b4de9 580 //func 14
claraluques 18:5338b83b4de9 581
claraluques 18:5338b83b4de9 582 //func 15
claraluques 27:83d2a710cc2f 583 void gohome(){
claraluques 27:83d2a710cc2f 584 lcd.cls();
claraluques 27:83d2a710cc2f 585 machine.machine_zero();
claraluques 27:83d2a710cc2f 586 while (home == 1){
claraluques 27:83d2a710cc2f 587 if (Mach.readable()){
claraluques 27:83d2a710cc2f 588 readSerial();
claraluques 27:83d2a710cc2f 589 }
claraluques 27:83d2a710cc2f 590 }
claraluques 27:83d2a710cc2f 591 func = 19;
claraluques 27:83d2a710cc2f 592 }
claraluques 18:5338b83b4de9 593
claraluques 18:5338b83b4de9 594 //func 16
claraluques 18:5338b83b4de9 595 void limitepontos(){ //tela para quando acabam os pontos
claraluques 18:5338b83b4de9 596 lcd.cls();
claraluques 26:59081efdce79 597 lcd.printf(" Voce atingiu o n%c maximo de pontos", 0xDF);
claraluques 26:59081efdce79 598 lcd.locate(9,2);
claraluques 26:59081efdce79 599 lcd.printf("(%d)", pontos);
claraluques 18:5338b83b4de9 600 lcd.locate(0,3);
claraluques 18:5338b83b4de9 601 lcd.printf("Conclua seu programa");
claraluques 18:5338b83b4de9 602 wait(1);
claraluques 18:5338b83b4de9 603 func = 2;
claraluques 21:7603fe283ba4 604 }
claraluques 26:59081efdce79 605
claraluques 26:59081efdce79 606 //func 17
claraluques 26:59081efdce79 607 void salvarprog(){
claraluques 26:59081efdce79 608 lcd.cls();
claraluques 26:59081efdce79 609 bot_enter = 0;
claraluques 26:59081efdce79 610 lcd.printf("Voce deseja salvar este programa?");
claraluques 26:59081efdce79 611 lcd.locate(5,2);
claraluques 26:59081efdce79 612 lcd.printf("Sim");
claraluques 26:59081efdce79 613 lcd.locate(5,3);
claraluques 26:59081efdce79 614 lcd.printf("Nao");
claraluques 26:59081efdce79 615 movercursor(2,3,4);
claraluques 26:59081efdce79 616 if (bot_enter!=penter){
claraluques 26:59081efdce79 617 if (linha==2){
claraluques 26:59081efdce79 618 salvar = 1;
claraluques 26:59081efdce79 619 func = 7;
claraluques 26:59081efdce79 620 }
claraluques 26:59081efdce79 621 if (linha==3){
claraluques 26:59081efdce79 622 salvar = 0;
claraluques 26:59081efdce79 623 func = 7;
claraluques 26:59081efdce79 624 }
claraluques 26:59081efdce79 625 }
claraluques 26:59081efdce79 626 }
claraluques 27:83d2a710cc2f 627
claraluques 27:83d2a710cc2f 628 //func 18
claraluques 27:83d2a710cc2f 629 void ctzhome(){
claraluques 27:83d2a710cc2f 630 lcd.cls();
claraluques 27:83d2a710cc2f 631 bot_enter = 0;
claraluques 27:83d2a710cc2f 632 lcd.printf("Certifique-se de que a maquina pode se");
claraluques 27:83d2a710cc2f 633 lcd.locate(5,2);
claraluques 27:83d2a710cc2f 634 lcd.printf("movimentar");
claraluques 27:83d2a710cc2f 635 lcd.locate(9,3);
claraluques 27:83d2a710cc2f 636 lcd.printf("OK");
claraluques 27:83d2a710cc2f 637 movercursor(3,3,8);
claraluques 27:83d2a710cc2f 638 if (bot_enter!=penter){
claraluques 27:83d2a710cc2f 639 if (linha==3){
claraluques 27:83d2a710cc2f 640 func = 15;
claraluques 27:83d2a710cc2f 641 }
claraluques 27:83d2a710cc2f 642 }
claraluques 27:83d2a710cc2f 643 }
claraluques 27:83d2a710cc2f 644
claraluques 27:83d2a710cc2f 645 //func 19
claraluques 27:83d2a710cc2f 646 void origem(){
claraluques 27:83d2a710cc2f 647 lcd.cls();
claraluques 27:83d2a710cc2f 648 lcd.locate(5,1);
claraluques 27:83d2a710cc2f 649 lcd.printf("A MAQUINA");
claraluques 27:83d2a710cc2f 650 lcd.locate(2,2);
claraluques 27:83d2a710cc2f 651 lcd.printf("ESTA NA ORIGEM");
claraluques 27:83d2a710cc2f 652 wait(1);
claraluques 27:83d2a710cc2f 653 func = 4;
claraluques 27:83d2a710cc2f 654 }
claraluques 26:59081efdce79 655
claraluques 26:59081efdce79 656 //função para ler os pontos
claraluques 21:7603fe283ba4 657 void readSerial(){
claraluques 21:7603fe283ba4 658 char recv;
lucasfontenla 24:46c3be0e8273 659 int points = 0;
lucasfontenla 24:46c3be0e8273 660 int pointx = 0;
lucasfontenla 24:46c3be0e8273 661 int pointy = 0;
lucasfontenla 24:46c3be0e8273 662 int pointz = 0;
claraluques 27:83d2a710cc2f 663 int action = 0;
lucasfontenla 24:46c3be0e8273 664 string coordx = "";
lucasfontenla 24:46c3be0e8273 665 string coordy = "";
lucasfontenla 24:46c3be0e8273 666 string coordz = "";
claraluques 26:59081efdce79 667
claraluques 21:7603fe283ba4 668
claraluques 21:7603fe283ba4 669 while(1){
claraluques 21:7603fe283ba4 670 recv = Mach.getc();
claraluques 27:83d2a710cc2f 671 printf("%c\n\r", recv);
claraluques 27:83d2a710cc2f 672 if (recv == 'a' /*&& points == 0*/){
claraluques 27:83d2a710cc2f 673 home = 0;
claraluques 27:83d2a710cc2f 674 exec = 0;
claraluques 26:59081efdce79 675 printf("oi\n\r");
claraluques 27:83d2a710cc2f 676 action = 1;
claraluques 26:59081efdce79 677 }
lucasfontenla 24:46c3be0e8273 678 if (recv == 'p'){
claraluques 21:7603fe283ba4 679 points = 1;
claraluques 23:19c67758032d 680 }
claraluques 23:19c67758032d 681 if (points){
lucasfontenla 24:46c3be0e8273 682 if (recv == 'X'){
claraluques 21:7603fe283ba4 683 pointx = 1;
lucasfontenla 24:46c3be0e8273 684 pointy = 0;
lucasfontenla 24:46c3be0e8273 685 pointz = 0;
claraluques 21:7603fe283ba4 686 }
lucasfontenla 24:46c3be0e8273 687 else if (recv == 'Y'){
claraluques 21:7603fe283ba4 688 pointy = 1;
lucasfontenla 24:46c3be0e8273 689 pointx = 0;
lucasfontenla 24:46c3be0e8273 690 pointz = 0;
claraluques 21:7603fe283ba4 691 }
lucasfontenla 24:46c3be0e8273 692 else if (recv == 'Z'){
claraluques 21:7603fe283ba4 693 pointz = 1;
lucasfontenla 24:46c3be0e8273 694 pointx = 0;
lucasfontenla 24:46c3be0e8273 695 pointy = 0;
claraluques 23:19c67758032d 696 }
lucasfontenla 24:46c3be0e8273 697 else if (recv == 'x'){
claraluques 23:19c67758032d 698 cx = atof(coordx.c_str());
claraluques 23:19c67758032d 699 cy = atof(coordy.c_str());
claraluques 23:19c67758032d 700 cz = atof(coordz.c_str());
claraluques 23:19c67758032d 701 printf("%s,%s,%s\n\r", coordx, coordy, coordz);
claraluques 21:7603fe283ba4 702 break;
claraluques 21:7603fe283ba4 703 }
claraluques 23:19c67758032d 704 }
claraluques 23:19c67758032d 705 if (pointx){
lucasfontenla 24:46c3be0e8273 706 if (recv!='X'){
claraluques 23:19c67758032d 707 coordx.push_back(recv);
claraluques 23:19c67758032d 708 }
claraluques 23:19c67758032d 709 }
claraluques 23:19c67758032d 710 if (pointy){
lucasfontenla 24:46c3be0e8273 711 if (recv!='Y'){
claraluques 23:19c67758032d 712 coordy.push_back(recv);
claraluques 23:19c67758032d 713 }
claraluques 23:19c67758032d 714 }
claraluques 23:19c67758032d 715 if (pointz){
lucasfontenla 24:46c3be0e8273 716 if (recv!='Z'){
claraluques 23:19c67758032d 717 coordz.push_back(recv);
claraluques 23:19c67758032d 718 }
claraluques 23:19c67758032d 719 }
claraluques 27:83d2a710cc2f 720 if (action){
claraluques 27:83d2a710cc2f 721 if (recv=='x'){
claraluques 27:83d2a710cc2f 722 break;
claraluques 27:83d2a710cc2f 723 }
claraluques 27:83d2a710cc2f 724 }
claraluques 23:19c67758032d 725 }
claraluques 21:7603fe283ba4 726 }
claraluques 23:19c67758032d 727
claraluques 26:59081efdce79 728
lucasfontenla 22:22ddb0b21d48 729
claraluques 21:7603fe283ba4 730 Menu(); //não apagar
lucasfontenla 17:0b8e489fac36 731 };