Final code for Klaus, the glue applying machine.
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 #include "TextLCD.h" 00003 #include "string" 00004 00005 //-----------Botões Anna---------- 00006 // ------------------------Portas X ---------------------------- 00007 DigitalOut dirX(PC_10); 00008 DigitalOut stepX(PC_12); 00009 DigitalOut enableX(PA_14); 00010 00011 00012 // ------------------------Portas Y ---------------------------- 00013 DigitalOut dirY(A1); 00014 DigitalOut stepY(A0); 00015 DigitalOut enableY(PC_3); 00016 00017 // ------------------------Portas Z ---------------------------- 00018 DigitalOut dirZ(PB_7); 00019 DigitalOut stepZ(PC_13); 00020 DigitalOut enableZ(A2); 00021 00022 // ------------------------Portas IHM -------------------------- 00023 /*DigitalIn mais(A5); 00024 DigitalIn menos(A4); 00025 InterruptIn X(PA_13); 00026 InterruptIn Z(PA_15);*/ 00027 /*InterruptIn enter(D9); 00028 InterruptIn X(D10); 00029 InterruptIn Y(D11); 00030 InterruptIn Z(D12); 00031 DigitalIn mais(D13); 00032 DigitalIn menos(D14);*/ 00033 InterruptIn enter(A4); 00034 InterruptIn X(PC_2); 00035 InterruptIn Y(D11); 00036 InterruptIn Z(D12); 00037 00038 InterruptIn cancelar(PC_4); 00039 00040 DigitalIn mais(D13); 00041 DigitalIn menos(A3); 00042 00043 DigitalOut LedX(PC_0); 00044 DigitalOut LedY(PC_11); 00045 DigitalOut LedZ(PC_5); 00046 00047 DigitalOut Valvula_embolo(PC_8); 00048 DigitalOut Valvula_ponta(PC_6); 00049 00050 DigitalIn fdcx2(PB_1); 00051 DigitalIn fdcx1(PB_2); 00052 DigitalIn fdcy2(PB_11); 00053 DigitalIn fdcy1(PB_15); 00054 DigitalIn fdcz2(PB_12); 00055 DigitalIn fdcz1(PB_14); 00056 00057 InterruptIn Emergencia(D15); 00058 DigitalIn Emerg(D15); 00059 00060 00061 //Varíaveis auxiliares 00062 int ponto = 0; 00063 00064 int continuax = 0; 00065 int continuay = 0; 00066 int continuaz = 0; 00067 bool seguranca = 1; 00068 bool printou = 0; 00069 bool check_cancela = 1; 00070 int iteracoes = 1; 00071 00072 #define velocidade_jog 20 00073 #define velocidade_padrao 20 00074 #define velocidade_lenta 100 00075 #define velocidade_mais_lenta 300 00076 #define velocidade_rapida 10 00077 00078 int velocidade = velocidade_padrao; 00079 float tempo_acionado; 00080 //-------------------------------- 00081 00082 //------Varíaveis Juliano--------- 00083 InterruptIn button_UP(D13);//A5); 00084 InterruptIn button_DOWN(A3);//A4); 00085 /*InterruptIn enter(USER_BUTTON);*/ 00086 00087 TextLCD lcd(D2, D3, D4, D5, D6, D7, TextLCD::LCD20x4); // rs, e, d4-d7 00088 00089 //Listas Programa e posicao atual do bico 00090 int posicao[3] = {0,0,0}; 00091 double passo = 0.0015625; 00092 float passox = 0.0009375f; 00093 float Px; 00094 int trajetoriax[100] = {0,0,0}; 00095 int trajetoriay[100] = {0,0,0}; 00096 int trajetoriaz[100] = {0,0,0}; 00097 int Pcola[100] = {0,1,2,2,1,2,2,2,1,1}; 00098 int Pcola_quant[100] = {0,1,2,2,2,2,1,2,2,1}; 00099 00100 int tam_pontos = 2; 00101 00102 //Variaveis auxiliares 00103 int fim = 3; 00104 int i = 0; 00105 int aux = 0; 00106 int escolha = 0; 00107 00108 //Listas de menus e variaveis relacionadas aos menus 00109 char* tela_Inicial[6] = {"------Klaus-------","Programa","Referenciar","Teste Vazao"}; 00110 char* tela_Programar[5] = {"Voltar","Iniciar Programa","Editar Programa","Novo Programa"}; 00111 char* tela_Informacoes[10] = {"Voltar","KLAUS","Desenvolvedores:","Giovana Lemes","Andre Annunziato","Anna","Ana Henrique","Arthur Rizzo","Juliano Nassar"}; 00112 char* tela_Editar[4] = {"Voltar","Redefinir","Cola:","Quant:"}; 00113 char* tela_Cola_Quant[3] = {"Padrao","Pouco","Muita"}; 00114 char* tela_Cola[3] = {"Nao","Ponto","trajeto"}; 00115 int tam_Editar = 4; 00116 int tam_Inicial = 4; 00117 int tam_Programar = 4; 00118 int tam_Informacoes = 9; 00119 int tam_Cola= 3; 00120 int tam_Cola_Quant = 3; 00121 int tam; 00122 int select = 0; 00123 int select1 = 0; 00124 //Posicao do cursor 00125 int cursor_row = 0; 00126 int cursor_column = 0; 00127 00128 //Flags para rodar funcoes 00129 bool flagMenu = 1; 00130 bool flagSelect = 0; 00131 bool referencia = 0; 00132 00133 00134 // ------------------------ Movimentação ----------------------------- 00135 void atualiza_posicao(int eixo, bool dir) { // eixo: X=0 Y=1 Z=2 00136 if(dir == 1){ 00137 posicao[eixo] = posicao[eixo]+ 1; 00138 } 00139 else{ 00140 posicao[eixo] = posicao[eixo]- 1; 00141 } 00142 } 00143 void movimentax(bool enable,bool dir,int velocidade){ 00144 if(posicao[0]<0 && dir == 0 && referencia ==0 || fdcx1 == 1 && dir ==0 && referencia == 0 || fdcx2 == 1 && dir ==1){ 00145 enableX = 1; 00146 } 00147 else{ 00148 enableX=enable; 00149 dirX = dir; 00150 stepX = !stepX; 00151 atualiza_posicao(0,dir); 00152 wait_us(velocidade); 00153 stepX = !stepX; 00154 wait_us(velocidade); 00155 } 00156 } 00157 00158 void movimentay(bool enable,bool dir,int velocidade){ 00159 if(posicao[1]<0 && dir == 0 && referencia ==0 || fdcy1 == 1 && dir ==0 && referencia == 0 || fdcy2 == 1 && dir ==1){ 00160 enableY = 1; 00161 } 00162 else{ 00163 enableY=enable; 00164 dirY = dir; 00165 stepY = !stepY; 00166 atualiza_posicao(1,dir); 00167 wait_us(velocidade); 00168 stepY = !stepY; 00169 wait_us(velocidade); 00170 } 00171 } 00172 00173 void movimentaz(bool enable,bool dir,int velocidade){ 00174 if(posicao[2]>0 && dir == 1 && referencia ==0 || fdcz1 == 1 && dir ==1 && referencia == 0 || fdcz2 == 1 && dir ==0){ 00175 enableZ = 1; 00176 } 00177 else{ 00178 enableZ=enable; 00179 dirZ = dir; 00180 stepZ = !stepZ; 00181 atualiza_posicao(2,dir); 00182 wait_us(velocidade); 00183 stepZ = !stepZ; 00184 wait_us(velocidade); 00185 } 00186 00187 } 00188 //------------------------Válvula---------------------------------- 00189 00190 void aciona_valvula(){ 00191 Valvula_embolo = 1; 00192 Valvula_ponta = 0; 00193 } 00194 00195 void desliga_valvula(){ 00196 Valvula_embolo = 0; 00197 Valvula_ponta = 1; 00198 } 00199 00200 void aciona_eixos() 00201 { 00202 X.enable_irq(); 00203 Y.enable_irq(); 00204 Z.enable_irq(); 00205 00206 } 00207 00208 void desliga_eixos() 00209 { 00210 X.disable_irq(); 00211 Y.disable_irq(); 00212 Z.disable_irq(); 00213 } 00214 //-------------------------------- 00215 void pressionado(){ 00216 if (printou == 0){ 00217 desliga_valvula(); 00218 enableX = 1; 00219 enableY = 1; 00220 enableZ = 1; 00221 lcd.cls(); 00222 lcd.locate(5,0); 00223 lcd.printf("EMERGENCIA\n MAQUINA DESLIGADA"); 00224 LedX = 0; 00225 LedY = 0; 00226 LedZ = 0; 00227 desliga_eixos(); 00228 printou = 1; 00229 } 00230 } 00231 00232 // ------------------- Referenciamento ------------------------------ 00233 void posicao_ref(int eixo){ 00234 posicao[eixo]= 0; 00235 } 00236 00237 void referenciamentox(){ 00238 if(seguranca){ 00239 while(fdcx1 == 0 && check_cancela){ 00240 if (seguranca){ 00241 movimentax(0,0,velocidade_rapida); // 1 = pra esquerda, pra porta 00242 } 00243 else{ 00244 break; 00245 } 00246 } 00247 if(seguranca){wait(0.1);} 00248 int i = 0; 00249 while (i<10000 && check_cancela){ 00250 if (seguranca){ 00251 movimentax(0,1,velocidade_padrao); 00252 i=i+1; 00253 } 00254 else{ 00255 break; 00256 } 00257 } 00258 if(seguranca){wait(0.1);} 00259 while (fdcx1 == 0 && check_cancela){ 00260 if (seguranca){ 00261 movimentax(0,0,velocidade_lenta); 00262 } 00263 else{ 00264 break; 00265 } 00266 } 00267 if(seguranca){wait(0.1);} 00268 i = 0; 00269 while (i < 5000 && check_cancela){ 00270 if (seguranca){ 00271 movimentax(0,1,velocidade_lenta); 00272 i=i+1; 00273 } 00274 else{ 00275 break; 00276 } 00277 } 00278 if(seguranca){wait(0.1);} 00279 while (fdcx1 == 0 && check_cancela){ 00280 if (seguranca){ 00281 movimentax(0,0,velocidade_mais_lenta); 00282 } 00283 else{ 00284 break; 00285 } 00286 } 00287 if(seguranca){ 00288 wait(0.1); 00289 enableX = 1; 00290 posicao_ref(0); 00291 } 00292 else{ 00293 pressionado(); 00294 } 00295 } 00296 else{ 00297 pressionado(); 00298 } 00299 00300 } 00301 00302 00303 void referenciamentoy(){ 00304 while(fdcy1 == 0 && check_cancela){ 00305 if (seguranca){ 00306 movimentay(0,0,velocidade_rapida); // 1 = pra direita -> mais pra perto de nós // aplicar seguranca x 00307 } 00308 else{ 00309 pressionado(); 00310 break; 00311 } 00312 } 00313 if(seguranca){wait(0.1);} 00314 int i = 0; 00315 while (i<10000 && check_cancela){ 00316 if (seguranca){ 00317 movimentay(0,1,velocidade_padrao); 00318 i=i+1; 00319 } 00320 else{ 00321 pressionado(); 00322 break; 00323 } 00324 } 00325 if(seguranca){wait(0.1);} 00326 while (fdcy1 == 0 && check_cancela){ 00327 if (seguranca){ 00328 movimentay(0,0,velocidade_lenta); 00329 } 00330 else{ 00331 pressionado(); 00332 break; 00333 } 00334 } 00335 if(seguranca){wait(0.1);} 00336 i = 0; 00337 while (i < 5000 && check_cancela){ 00338 if (seguranca){ 00339 movimentay(0,1,velocidade_lenta); 00340 i=i+1; 00341 } 00342 else{ 00343 pressionado(); 00344 break; 00345 } 00346 } 00347 if(seguranca){wait(0.1);} 00348 while (fdcy1 == 0 && check_cancela){ 00349 if (seguranca){ 00350 movimentay(0,0,velocidade_mais_lenta); 00351 } 00352 else{ 00353 pressionado(); 00354 break; 00355 } 00356 } 00357 if(seguranca){wait(0.1);} 00358 enableY = 1; 00359 posicao_ref(1); 00360 00361 } 00362 00363 00364 void referenciamentoz(){ 00365 while(fdcz1 == 0 && check_cancela){ 00366 if (seguranca){ 00367 movimentaz(0,1,velocidade_padrao); 00368 } 00369 else{ 00370 pressionado(); 00371 break; 00372 } 00373 } 00374 if(seguranca){wait(0.1);} 00375 int i = 0; 00376 while (i<10000 && check_cancela){ 00377 if (seguranca){ 00378 movimentaz(0,0,velocidade_padrao); 00379 i=i+1; 00380 } 00381 else{ 00382 pressionado(); 00383 break; 00384 } 00385 } 00386 if(seguranca){wait(0.1);} 00387 while (fdcz1 == 0 && check_cancela){ 00388 if (seguranca){ 00389 movimentaz(0,1,velocidade_lenta); 00390 } 00391 else{ 00392 pressionado(); 00393 break; 00394 } 00395 } 00396 if(seguranca){wait(0.1);} 00397 i = 0; 00398 while (i < 5000 && check_cancela){ 00399 if (seguranca){ 00400 movimentaz(0,0,velocidade_lenta); 00401 i=i+1; 00402 } 00403 else{ 00404 pressionado(); 00405 break; 00406 } 00407 } 00408 if(seguranca){wait(0.1);} 00409 while (fdcz1 == 0 && check_cancela){ 00410 if (seguranca){ 00411 movimentaz(0,1,velocidade_mais_lenta); 00412 } 00413 else{ 00414 pressionado(); 00415 break; 00416 } 00417 } 00418 wait(0.1); 00419 enableZ = 1; 00420 posicao_ref(2); 00421 //lcd.cls(); 00422 00423 } 00424 00425 void referenciamento(){ 00426 referencia = 1; 00427 referenciamentox(); 00428 referenciamentoy(); 00429 referenciamentoz(); 00430 referencia = 0; 00431 } 00432 00433 //------------------------------------------------------------ 00434 void cancela() 00435 { 00436 check_cancela = 0; 00437 desliga_eixos(); 00438 LedX = 0; 00439 LedY= 0; 00440 LedZ= 0; 00441 } 00442 00443 void disable_buttons() 00444 { 00445 button_UP.disable_irq(); 00446 button_DOWN.disable_irq(); 00447 enter.disable_irq(); 00448 } 00449 00450 void enable_buttons() 00451 { 00452 button_UP.enable_irq(); 00453 button_DOWN.enable_irq(); 00454 enter.enable_irq(); 00455 00456 } 00457 00458 //Cursor para cima e atualiza o Menu 00459 void change_menu_UP(void) 00460 { 00461 flagMenu = !flagMenu; 00462 cursor_row-=1; 00463 } 00464 00465 //Cursor para baixo e atualiza o Menu 00466 void change_menu_DOWN(void) 00467 { 00468 flagMenu = !flagMenu; 00469 cursor_row+=1; 00470 } 00471 00472 //Seleciona o menu 00473 void select_menu(void) 00474 { 00475 flagMenu = !flagMenu; 00476 flagSelect = !flagSelect; 00477 } 00478 00479 void define_fim(int limite) 00480 { 00481 lcd.cls(); 00482 if(select == 0 && select1 ==0) 00483 { 00484 if (cursor_row >= 3) 00485 { 00486 fim = cursor_row; 00487 i = cursor_row - 3; 00488 } 00489 if (cursor_row <1) 00490 { 00491 fim = tam-1; 00492 cursor_row = tam-1; 00493 i = cursor_row - 3; 00494 } 00495 if (cursor_row >= tam) 00496 { 00497 cursor_row = 1; 00498 fim = 3; 00499 i = 0; 00500 } 00501 if (tam < 4) 00502 { 00503 fim = tam-1; 00504 i= 0; 00505 } 00506 } 00507 else 00508 { 00509 if (cursor_row >= 3) 00510 { 00511 fim = cursor_row; 00512 i = cursor_row - 3; 00513 } 00514 if (cursor_row <limite) 00515 { 00516 fim = limite + tam-1; 00517 cursor_row = limite + tam-1; 00518 i = cursor_row - 3 - limite; 00519 } 00520 if (cursor_row >= tam+limite) 00521 { 00522 cursor_row = limite; 00523 fim = 3-limite; 00524 i = 0; 00525 00526 } 00527 if (tam < 4) 00528 { 00529 fim = tam-1; 00530 i= 0; 00531 } 00532 else 00533 { 00534 fim = 3; 00535 i = 0; 00536 } 00537 } 00538 } 00539 00540 void posiciona_cursor(int column) 00541 { 00542 if (cursor_row >3) 00543 { 00544 lcd.locate(column,3); 00545 } 00546 else 00547 { 00548 lcd.locate(column,cursor_row); 00549 } 00550 lcd.printf(">"); 00551 aux = 0; 00552 i = 0; 00553 wait(0.15); 00554 } 00555 00556 //Mostra o menu inicial 00557 void Menu_Inicial() 00558 { 00559 tam = tam_Inicial; 00560 define_fim(0); 00561 while(i<=fim) 00562 { 00563 lcd.locate(1,aux); 00564 lcd.printf(tela_Inicial[i]); 00565 i+=1; 00566 aux+=1; 00567 } 00568 posiciona_cursor(0); 00569 } 00570 00571 //Mostra o menu progamar 00572 void Menu_Programar() 00573 { 00574 tam = tam_Programar; 00575 define_fim(0); 00576 while(i<=fim) 00577 { 00578 lcd.locate(1,aux); 00579 lcd.printf(tela_Programar[i]); 00580 i+=1; 00581 aux+=1; 00582 } 00583 posiciona_cursor(0); 00584 } 00585 00586 void edit_ponto() 00587 { 00588 select1 = -1; 00589 cursor_row = 0; 00590 int dir = 0; 00591 int save_pos = 0; 00592 while(check_cancela) 00593 { 00594 if(seguranca) 00595 { 00596 if(flagMenu) 00597 { 00598 lcd.cls(); 00599 disable_buttons(); 00600 00601 if(flagSelect) 00602 { 00603 select1 = cursor_row; 00604 flagSelect = !flagSelect; 00605 } 00606 00607 if (select1 == 0) 00608 { 00609 flagMenu = 0; 00610 break; 00611 } 00612 00613 switch(select1) 00614 { 00615 00616 case 1: 00617 wait(0.2); 00618 flagSelect = 0; 00619 flagMenu = 1; 00620 enable_buttons(); 00621 00622 while(check_cancela) 00623 { 00624 if(seguranca) 00625 { 00626 if(flagMenu) 00627 { 00628 disable_buttons(); 00629 if (flagSelect) 00630 { 00631 select1 = -1; 00632 cursor_row = select - 3; 00633 flagSelect = !flagSelect; 00634 break; 00635 } 00636 00637 aciona_eixos(); 00638 00639 if (mais==1) 00640 { 00641 dir = 1; 00642 } 00643 else if (menos==1) 00644 { 00645 dir = 0; 00646 } 00647 00648 if (mais ==1 || menos==1) 00649 { 00650 if(seguranca){ 00651 lcd.cls(); 00652 lcd.locate(0,1); 00653 if(continuax && posicao[0]<=0 && dir == 0|| continuax && fdcx1 == 1 && dir ==0){ 00654 lcd.printf("Final do curso x \n disponivel"); 00655 } 00656 else if (continuax){ 00657 lcd.printf("Movimentando eixo x"); 00658 } 00659 else if(continuay && posicao[1]<0 && dir == 0 || continuay && fdcy1 == 1 && dir ==0){ 00660 lcd.printf("Final do curso y \n disponivel"); 00661 } 00662 else if(continuay){ 00663 lcd.printf("Movimentando eixo y"); 00664 } 00665 else if(continuaz && posicao[2]<0 && dir == 0 || continuaz && fdcz1 == 1 && dir ==0){ 00666 lcd.printf("Final do curso z \n disponivel"); 00667 } 00668 else if (continuaz){ 00669 lcd.printf("Movimentando eixo z"); 00670 } 00671 else{ 00672 lcd.locate(2,1); 00673 lcd.printf("Selecione um eixo"); 00674 } 00675 } 00676 else{ 00677 pressionado(); 00678 } 00679 } 00680 00681 while(mais ==1 || menos==1 && check_cancela) 00682 { if(seguranca) 00683 { 00684 if(continuax) 00685 { 00686 movimentax(0,dir,velocidade_jog); 00687 } 00688 else if(continuay) 00689 { 00690 movimentay(0,dir,velocidade_jog); 00691 } 00692 else if(continuaz) 00693 { 00694 movimentaz(0,dir,velocidade_jog); 00695 } 00696 } 00697 else 00698 { 00699 pressionado(); 00700 break; 00701 } 00702 } 00703 if(seguranca) 00704 { 00705 lcd.cls(); 00706 enableX = 1; 00707 enableY = 1; 00708 enableZ = 1; 00709 lcd.locate(0,0); 00710 lcd.printf("x:"); 00711 lcd.locate(0,1); 00712 lcd.printf("%.2f",posicao[0]*passox); 00713 lcd.locate(7,0); 00714 lcd.printf("y:"); 00715 lcd.locate(7,1); 00716 lcd.printf("%.2f",posicao[1]*passo); 00717 lcd.locate(14,0); 00718 lcd.printf("z:"); 00719 lcd.locate(14,1); 00720 lcd.printf("%.2f",posicao[2]*passo); 00721 00722 lcd.locate(0,3); 00723 lcd.printf(">Definir Ponto %d",select - 2); 00724 } 00725 else 00726 { 00727 pressionado(); 00728 } 00729 enable_buttons(); 00730 flagMenu = !flagMenu; 00731 } 00732 } 00733 00734 else 00735 { 00736 save_pos = select; 00737 while(!seguranca) 00738 { 00739 pressionado(); 00740 } 00741 seguranca = 1; 00742 select1 = -1; 00743 select = save_pos; 00744 cursor_row = 0; 00745 flagMenu = 0; 00746 printou = 0; 00747 break; 00748 } 00749 } 00750 LedX = 0; 00751 LedY = 0; 00752 LedZ= 0; 00753 00754 if(check_cancela) 00755 { 00756 trajetoriax[select-3] = posicao[0]; 00757 trajetoriay[select-3] = posicao[1]; 00758 trajetoriaz[select-3] = posicao[2]; 00759 select1 = -1; 00760 cursor_row = select - 3; 00761 } 00762 LedX = 0; 00763 LedY = 0; 00764 LedZ = 0; 00765 check_cancela = 1; 00766 break; 00767 case 2: 00768 Pcola[select-3] += 1; 00769 if (Pcola[select-3]>2) 00770 { 00771 Pcola[select-3] = 0; 00772 } 00773 if (Pcola[select-3]>1 && select-3 ==0) 00774 { 00775 Pcola[select-3] = 0; 00776 } 00777 break; 00778 case 3: 00779 Pcola_quant[select-3] += 1; 00780 if (Pcola_quant[select-3]>2) 00781 { 00782 Pcola_quant[select-3] = 0; 00783 } 00784 break; 00785 } 00786 select1 = -1; 00787 00788 switch(Pcola[select-3]) 00789 { 00790 case 0: 00791 tela_Editar[2] = "Cola:nao"; 00792 break; 00793 case 1: 00794 tela_Editar[2] ="Cola:ponto"; 00795 break; 00796 case 2: 00797 tela_Editar[2] ="Cola:traj"; 00798 break; 00799 } 00800 switch(Pcola_quant[select-3]) 00801 { 00802 case 0: 00803 tela_Editar[3] ="Qtd:Padr"; 00804 break; 00805 case 1: 00806 tela_Editar[3] ="Qtd:pouco"; 00807 break; 00808 case 2: 00809 tela_Editar[3] ="Qtd:muito"; 00810 break; 00811 } 00812 //-------------- 00813 tam = tam_Editar; 00814 if(Pcola[select-3] == 0) 00815 { 00816 tam -=1; 00817 } 00818 define_fim(0); 00819 00820 lcd.locate(12,0); 00821 lcd.printf("PONTO %d",select-2); 00822 lcd.locate(12,1); 00823 lcd.printf("x:%3.2f",trajetoriax[select-3]*passo); 00824 lcd.locate(12,2); 00825 lcd.printf("y:%3.2f",trajetoriay[select-3]*passo); 00826 lcd.locate(12,3); 00827 lcd.printf("z:%3.2f",trajetoriaz[select-3]*passo); 00828 00829 while(i<=fim) 00830 { 00831 lcd.locate(1,aux); 00832 lcd.printf(tela_Editar[i]); 00833 i+=1; 00834 aux+=1; 00835 } 00836 posiciona_cursor(0); 00837 LedX = 0; 00838 LedY = 0; 00839 LedZ= 0; 00840 flagMenu = !flagMenu; 00841 enable_buttons(); 00842 } 00843 //-------------- 00844 } 00845 else{ 00846 pressionado(); 00847 break; 00848 } 00849 } 00850 select1 = 0; 00851 flagMenu = 0; 00852 check_cancela = 1; 00853 } 00854 00855 //Mostra Menu Editar 00856 void Programar_editar() 00857 { 00858 bool k = 0; 00859 lcd.cls(); 00860 cursor_row=1; 00861 flagMenu = 1; 00862 enable_buttons(); 00863 select = -1; 00864 while(check_cancela) 00865 { 00866 if(seguranca){ 00867 00868 if(flagMenu) 00869 { 00870 disable_buttons(); 00871 00872 if (flagSelect) 00873 { 00874 select = cursor_row; 00875 flagSelect = !flagSelect; 00876 //--------define_fim personalizado------------ 00877 switch(select) 00878 { case 0: 00879 select = 1; 00880 select1 = 0; 00881 escolha = -1; 00882 cursor_row = 1; 00883 flagMenu = 0; 00884 k = 1; 00885 break; 00886 case 1: 00887 if (tam_pontos >0) 00888 { 00889 tam_pontos -= 1; 00890 flagMenu = 0; 00891 } 00892 break; 00893 case 2: 00894 select1 = -1; 00895 trajetoriax[tam_pontos] = posicao[0]; 00896 trajetoriay[tam_pontos] = posicao[1]; 00897 trajetoriaz[tam_pontos] = posicao[2]; 00898 Pcola[tam_pontos] = 0; 00899 Pcola_quant[tam_pontos] = 0; 00900 00901 tam_pontos += 1; 00902 select = tam_pontos+2; 00903 00904 edit_ponto(); 00905 00906 cursor_row = 2; 00907 select = -1; 00908 select1 = -1; 00909 break; 00910 } 00911 } 00912 if(k) 00913 { 00914 break; 00915 } 00916 tam = tam_pontos+2; 00917 lcd.cls(); 00918 if (select >2) 00919 { 00920 select1 = -1; 00921 00922 edit_ponto(); 00923 00924 cursor_row = select; 00925 select = -1; 00926 select1 = -1; 00927 00928 } 00929 else 00930 { 00931 00932 if (cursor_row <3) 00933 { 00934 fim = 3; 00935 i = 0; 00936 } 00937 00938 if (cursor_row >= 3) 00939 { 00940 fim = cursor_row; 00941 i = cursor_row - 3; 00942 } 00943 if (cursor_row <0) 00944 { 00945 fim = tam; 00946 cursor_row = tam; 00947 i = cursor_row - 3; 00948 } 00949 if (cursor_row >= tam+1) 00950 { 00951 cursor_row = 0; 00952 fim = 3; 00953 i = 0; 00954 } 00955 if (tam ==2) 00956 { 00957 fim = 2; 00958 i= 0; 00959 } 00960 00961 //------------------------- 00962 while(i<=fim && check_cancela ) 00963 { 00964 switch(i) 00965 { 00966 case 0: 00967 lcd.locate(1,aux); 00968 lcd.printf("Voltar"); 00969 break; 00970 case 1: 00971 lcd.locate(1,aux); 00972 lcd.printf("exc P%d",tam_pontos); 00973 break; 00974 case 2: 00975 lcd.locate(1,aux); 00976 lcd.printf("Def P%d",tam_pontos+1); 00977 break; 00978 } 00979 if (i>2) 00980 { 00981 lcd.locate(1,aux); 00982 lcd.printf("P%i",i-2); 00983 switch(Pcola[i-3]) 00984 { 00985 case 1: 00986 lcd.printf("."); 00987 break; 00988 case 2: 00989 lcd.printf("-"); 00990 00991 break; 00992 } 00993 if (Pcola[i-3]!= 0) 00994 { 00995 switch(Pcola_quant[i-3]) 00996 { 00997 case 0: 00998 lcd.printf("Padrao"); 00999 break; 01000 case 1: 01001 lcd.printf("pouco"); 01002 break; 01003 case 2: 01004 lcd.printf("muita"); 01005 break; 01006 } 01007 } 01008 } 01009 01010 i+=1; 01011 aux+=1; 01012 } 01013 01014 } 01015 flagMenu = !flagMenu; 01016 01017 lcd.locate(12,0); 01018 lcd.printf("Pos At"); 01019 lcd.locate(12,1); 01020 lcd.printf("x:%.2f",posicao[0]*passo); 01021 lcd.locate(12,2); 01022 lcd.printf("y:%.2f",posicao[1]*passo); 01023 lcd.locate(12,3); 01024 lcd.printf("z:%.2f",posicao[2]*passo); 01025 posiciona_cursor(0); 01026 enable_buttons(); 01027 } 01028 } 01029 else{ 01030 pressionado(); 01031 break; 01032 } 01033 } 01034 01035 select = 1; 01036 select1 = 0; 01037 escolha = -1; 01038 cursor_row = 1; 01039 flagMenu = 0; 01040 check_cancela = 1; 01041 } 01042 01043 01044 // ------------------------- Rodando Programa --------------------------------------- 01045 01046 void rodar_programa(){ 01047 int ponto_rodando = 0; 01048 //int cola_inicial = 0 01049 while(ponto_rodando <= tam_pontos-1 && check_cancela){ 01050 velocidade = velocidade_padrao; 01051 if(seguranca){ 01052 if(Pcola[ponto_rodando] == 2){ 01053 if(Pcola_quant[ponto_rodando] == 1){ 01054 velocidade = velocidade_rapida; 01055 } 01056 if(Pcola_quant[ponto_rodando] == 2){ 01057 velocidade = velocidade_lenta; 01058 } 01059 aciona_valvula(); 01060 } 01061 if(posicao[2] < trajetoriaz[ponto_rodando]) { 01062 while(posicao[2] != trajetoriaz[ponto_rodando] && check_cancela){ 01063 if(seguranca){ 01064 movimentaz(0,1, velocidade); 01065 } 01066 else{ 01067 pressionado(); 01068 break; 01069 } 01070 } 01071 } 01072 enableZ=1; 01073 while(posicao[0] != trajetoriax[ponto_rodando] && check_cancela){ 01074 if(seguranca){ 01075 if(posicao[0]< trajetoriax[ponto_rodando]){ 01076 movimentax(0,1, velocidade_jog); 01077 } 01078 if(posicao[0]> trajetoriax[ponto_rodando]){ 01079 movimentax(0,0, velocidade); 01080 } 01081 } 01082 else{ 01083 pressionado(); 01084 break; 01085 } 01086 } 01087 01088 enableX= 1; 01089 while(posicao[1] != trajetoriay[ponto_rodando] && check_cancela){ 01090 if(seguranca){ 01091 if(posicao[1]< trajetoriay[ponto_rodando]){ 01092 movimentay(0,1, velocidade); 01093 } 01094 if(posicao[1]> trajetoriay[ponto_rodando]){ 01095 movimentay(0,0, velocidade); 01096 } 01097 } 01098 else{ 01099 pressionado(); 01100 break; 01101 } 01102 } 01103 enableY=1; 01104 if(posicao[2] > trajetoriaz[ponto_rodando]) { 01105 while(posicao[2] != trajetoriaz[ponto_rodando] && check_cancela){ 01106 if(seguranca){ 01107 movimentaz(0,0, velocidade); 01108 } 01109 else{ 01110 pressionado(); 01111 break; 01112 } 01113 } 01114 } 01115 enableZ=1; 01116 01117 01118 if(seguranca){ 01119 wait(1); 01120 } 01121 if(Pcola[ponto_rodando] == 1){ 01122 aciona_valvula(); 01123 if(Pcola_quant[ponto_rodando] == 0){ 01124 tempo_acionado =0.3; 01125 } 01126 else if (Pcola_quant[ponto_rodando] == 1){ 01127 tempo_acionado =0.5; 01128 } 01129 else{ 01130 tempo_acionado =0.1; 01131 } 01132 wait(tempo_acionado); 01133 desliga_valvula(); 01134 } 01135 if(Pcola[ponto_rodando] == 2){ 01136 desliga_valvula(); 01137 } 01138 ponto_rodando++; 01139 } 01140 else{ 01141 pressionado(); 01142 break; 01143 } 01144 01145 } 01146 } 01147 void sim_nao(char* titulo) 01148 { 01149 if (flagMenu) 01150 { 01151 lcd.cls(); 01152 disable_buttons(); 01153 if (cursor_row<2) 01154 { 01155 cursor_row= 3; 01156 } 01157 if (cursor_row>3) 01158 { 01159 cursor_row = 2; 01160 } 01161 lcd.locate(0,0); 01162 lcd.printf(titulo); 01163 lcd.locate(1,2); 01164 lcd.printf("sim"); 01165 lcd.locate(1,3); 01166 lcd.printf("nao"); 01167 posiciona_cursor(0); 01168 if (flagSelect) 01169 { 01170 escolha = cursor_row-1; 01171 flagSelect = !flagSelect; 01172 } 01173 01174 flagMenu = !flagMenu; 01175 01176 enable_buttons(); 01177 } 01178 01179 01180 } 01181 01182 void Referenciar() 01183 { 01184 lcd.cls(); 01185 select = 0; 01186 select1 = 0; 01187 escolha = 0; 01188 cursor_row =2; 01189 flagMenu = 1; 01190 flagSelect = 0; 01191 01192 enable_buttons(); 01193 while(check_cancela) 01194 { 01195 if(seguranca){ 01196 printou = 0; 01197 sim_nao("Deseja Referenciar?"); 01198 01199 if (escolha ==1) 01200 { 01201 disable_buttons(); 01202 lcd.cls(); 01203 lcd.locate(0,1); 01204 lcd.printf(" REFERENCIANDO..."); 01205 referenciamento(); 01206 escolha = 0; 01207 cursor_row =1; 01208 enable_buttons(); 01209 flagMenu = 1; 01210 break; 01211 } 01212 01213 if (escolha ==2) 01214 { 01215 lcd.cls(); 01216 escolha = 0; 01217 cursor_row =1; 01218 select = 0; 01219 select1 = 0; 01220 flagMenu=1; 01221 break; 01222 } 01223 } 01224 else{ 01225 pressionado(); 01226 } 01227 01228 } 01229 01230 if(!check_cancela) 01231 { 01232 lcd.cls(); 01233 lcd.locate(1,1); 01234 lcd.printf("operacao cancelada"); 01235 wait(1.2); 01236 } 01237 escolha = 0; 01238 cursor_row =1; 01239 select = 0; 01240 select1 = 0; 01241 flagMenu=1; 01242 check_cancela =1; 01243 01244 } 01245 void teste_vazao(){ 01246 if(seguranca){ 01247 while(posicao[0] > 0 && check_cancela){ 01248 if (seguranca){ 01249 movimentax(0,0,velocidade_padrao); // 1 = pra esquerda, pra porta 01250 } 01251 else{ 01252 pressionado(); 01253 break; 01254 } 01255 } 01256 while(posicao[1] > 0 && check_cancela){ 01257 if (seguranca){ 01258 movimentay(0,0,velocidade_padrao); // 1 = pra esquerda, pra porta 01259 } 01260 else{ 01261 pressionado(); 01262 break; 01263 } 01264 } 01265 while(posicao[2] > 0 && check_cancela){ 01266 if (seguranca){ 01267 movimentaz(0,1,velocidade_padrao); // 1 = pra esquerda, pra porta 01268 } 01269 else{ 01270 pressionado(); 01271 break; 01272 } 01273 } 01274 if(seguranca){aciona_valvula();} 01275 if(seguranca){wait(1);} 01276 if(seguranca){desliga_valvula();} 01277 } 01278 else{ 01279 pressionado(); 01280 } 01281 } 01282 01283 void Vazao() 01284 { 01285 lcd.cls(); 01286 select = 0; 01287 select1 = 0; 01288 escolha = 0; 01289 cursor_row =2; 01290 flagMenu = 1; 01291 flagSelect = 0; 01292 01293 enable_buttons(); 01294 while(check_cancela) 01295 { 01296 if(seguranca){ 01297 printou = 0; 01298 sim_nao("Deseja testar vazao?"); 01299 01300 if (escolha ==1) 01301 { 01302 disable_buttons(); 01303 lcd.cls(); 01304 lcd.locate(0,1); 01305 lcd.printf(" TESTANDO..."); 01306 teste_vazao(); 01307 escolha = 0; 01308 cursor_row =1; 01309 enable_buttons(); 01310 flagMenu = 0; 01311 break; 01312 } 01313 01314 if (escolha ==2) 01315 { 01316 lcd.cls(); 01317 escolha = 0; 01318 cursor_row =1; 01319 select = 0; 01320 select1 = 0; 01321 flagMenu=0; 01322 break; 01323 } 01324 } 01325 else{ 01326 pressionado(); 01327 } 01328 01329 } 01330 01331 if(!check_cancela) 01332 { 01333 lcd.cls(); 01334 lcd.locate(1,1); 01335 lcd.printf("operacao cancelada"); 01336 wait(1.2); 01337 } 01338 01339 lcd.cls(); 01340 escolha = 0; 01341 cursor_row =1; 01342 select = 0; 01343 select1 = 0; 01344 flagMenu=0; 01345 check_cancela = 1; 01346 } 01347 01348 01349 void eixox(){ 01350 continuax = 1; 01351 continuay = 0; 01352 continuaz = 0; 01353 LedX = 1; 01354 LedY = 0; 01355 LedZ = 0; 01356 } 01357 void eixoy(){ 01358 continuax = 0; 01359 continuay = 1; 01360 continuaz = 0; 01361 LedX = 0; 01362 LedY = 1; 01363 LedZ = 0; 01364 } 01365 01366 void eixoz(){ 01367 continuax = 0; 01368 continuay = 0; 01369 continuaz = 1; 01370 01371 LedX = 0; 01372 LedY = 0; 01373 LedZ = 1; 01374 } 01375 01376 01377 void programar() 01378 { 01379 01380 tam_pontos = 0; 01381 escolha = 0; 01382 select = 0; 01383 select1 = 0; 01384 lcd.cls(); 01385 flagMenu = 1; 01386 flagSelect = 0; 01387 cursor_row = 0; 01388 int dir = 0; 01389 bool k = 0; 01390 enable_buttons(); 01391 while(check_cancela) 01392 { 01393 if(seguranca){ 01394 if(flagMenu) 01395 { 01396 disable_buttons(); 01397 if(flagSelect) 01398 { 01399 wait(0.2); 01400 select +=1; 01401 select1 = cursor_row; 01402 escolha = cursor_row-1; 01403 flagSelect = !flagSelect; 01404 cursor_row = 1; 01405 } 01406 01407 switch(select) 01408 { 01409 case 0: 01410 01411 aciona_eixos(); 01412 if (mais==1) 01413 { 01414 dir = 1; 01415 } 01416 else if (menos==1) 01417 { 01418 dir = 0; 01419 } 01420 01421 if (mais ==1 || menos==1) 01422 { if(seguranca){ 01423 lcd.cls(); 01424 lcd.locate(0,1); 01425 if(continuax && posicao[0]<=0 && dir == 0|| continuax && fdcx1 == 1 && dir ==0|| continuax && fdcx2 == 1 && dir ==1){ 01426 lcd.printf("Final do curso x \n disponivel"); 01427 } 01428 else if (continuax){ 01429 lcd.printf("Movimentando eixo x"); 01430 } 01431 else if(continuay && posicao[1]<0 && dir == 0 || continuay && fdcy1 == 1 && dir ==0 || continuay && fdcy2 == 1 && dir ==1){ 01432 lcd.printf("Final do curso y \n disponivel"); 01433 } 01434 else if(continuay){ 01435 lcd.printf("Movimentando eixo y"); 01436 } 01437 else if(continuaz && posicao[2]>0 && dir == 1 || continuaz && fdcz1 == 1 && dir ==1 || continuaz && fdcz2 == 1 && dir ==0){ 01438 lcd.printf("Final do curso z \n disponivel"); 01439 } 01440 else if (continuaz){ 01441 lcd.printf("Movimentando eixo z"); 01442 } 01443 else{ 01444 lcd.locate(2,1); 01445 lcd.printf("Selecione um eixo"); 01446 } 01447 } 01448 else{ 01449 pressionado(); 01450 } 01451 } 01452 01453 while(mais ==1 || menos==1 && check_cancela) 01454 { if(seguranca){ 01455 if(continuax){ 01456 movimentax(0,dir,velocidade_jog); 01457 } 01458 else if(continuay){ 01459 movimentay(0,dir,velocidade_jog); 01460 } 01461 else if(continuaz){ 01462 movimentaz(0,dir,velocidade_jog); 01463 } 01464 } 01465 else{ 01466 pressionado(); 01467 break; 01468 } 01469 } 01470 if(seguranca){ 01471 lcd.cls(); 01472 enableX = 1; 01473 enableY = 1; 01474 enableZ = 1; 01475 lcd.locate(0,0); 01476 lcd.printf("x:"); 01477 lcd.locate(0,1); 01478 Px = posicao[0]*passox; 01479 lcd.printf("%.1f",Px); 01480 lcd.locate(7,0); 01481 lcd.printf("y:"); 01482 lcd.locate(7,1); 01483 lcd.printf("%.1f",posicao[1]*passo); 01484 lcd.locate(14,0); 01485 lcd.printf("z:"); 01486 lcd.locate(14,1); 01487 lcd.printf("%.1f",posicao[2]*passo); 01488 01489 lcd.locate(0,3); 01490 lcd.printf(">Definir Ponto %d",tam_pontos+1); 01491 } 01492 else{ 01493 pressionado(); 01494 } 01495 break; 01496 case 1: 01497 LedX = 0; 01498 LedY= 0; 01499 LedZ= 0; 01500 desliga_eixos(); 01501 lcd.cls(); 01502 sim_nao("Definir essas\ncoordenadas?"); 01503 flagMenu=1; 01504 break; 01505 case 2: 01506 if (escolha == 2){ 01507 select -=2; 01508 flagMenu = 0; 01509 break; 01510 } 01511 lcd.cls(); 01512 trajetoriax[tam_pontos] = posicao[0]; 01513 trajetoriay[tam_pontos] = posicao[1]; 01514 trajetoriaz[tam_pontos] = posicao[2]; 01515 if (tam_pontos == 0) 01516 { 01517 sim_nao("Depositar cola no ponto"); 01518 lcd.locate(5,1); 01519 lcd.printf(" %d?",tam_pontos + 1); 01520 flagMenu = 1; 01521 } 01522 else 01523 { 01524 tam = tam_Cola; 01525 define_fim(1); 01526 aux = 1; 01527 lcd.locate(0,0); 01528 lcd.printf("Depositar cola?"); 01529 while(i<=fim && check_cancela) 01530 { 01531 if(i<2) 01532 { 01533 lcd.locate(1,aux); 01534 lcd.printf(tela_Cola[i]); 01535 lcd.printf("(P%d)",tam_pontos+1); 01536 i+=1; 01537 aux+=1; 01538 } 01539 else 01540 { 01541 lcd.locate(1,aux); 01542 lcd.printf(tela_Cola[i]); 01543 lcd.printf("(P%d-",tam_pontos); 01544 lcd.printf("P%d)",tam_pontos+1); 01545 i+=1; 01546 aux+=1; 01547 } 01548 } 01549 posiciona_cursor(0); 01550 } 01551 break; 01552 case 3: 01553 lcd.cls(); 01554 if (escolha ==2 && tam_pontos==0) 01555 { 01556 Pcola[tam_pontos] = 0; 01557 } 01558 else if (select1 >1) 01559 { 01560 escolha = 1; 01561 } 01562 else 01563 { 01564 escolha = 0; 01565 } 01566 01567 if (escolha ==1 && select>1) 01568 { 01569 01570 Pcola[tam_pontos] = select1 - 1; 01571 tam = tam_Cola_Quant; 01572 define_fim(1); 01573 aux = 1; 01574 lcd.locate(0,0); 01575 lcd.printf("Quantidade de cola?"); 01576 while(i<=fim && check_cancela) 01577 { 01578 lcd.locate(1,aux); 01579 lcd.printf(tela_Cola_Quant[i]); 01580 i+=1; 01581 aux+=1; 01582 } 01583 posiciona_cursor(0); 01584 } 01585 else 01586 { 01587 Pcola[tam_pontos] = 0; 01588 Pcola_quant[tam_pontos] = 0; 01589 flagMenu = 0; 01590 select+=1; 01591 } 01592 01593 01594 break; 01595 case 4: 01596 lcd.cls(); 01597 Pcola_quant[tam_pontos] = select1 - 1; 01598 sim_nao("Deseja definir mais um ponto?"); 01599 flagMenu = 1; 01600 break; 01601 case 5: 01602 tam_pontos +=1; 01603 lcd.cls(); 01604 if (escolha ==1) 01605 { 01606 select = 0; 01607 select1 = -1; 01608 } 01609 else 01610 { 01611 select = 0; 01612 select1= 0; 01613 lcd.cls(); 01614 lcd.locate(3,1); 01615 lcd.printf("Programa Salvo"); 01616 wait(2); 01617 k = 1; 01618 } 01619 flagMenu = 0; 01620 break; 01621 } 01622 enable_buttons(); 01623 if (k) 01624 { 01625 break; 01626 } 01627 flagMenu= !flagMenu; 01628 } 01629 } 01630 else{ 01631 pressionado(); 01632 break; 01633 } 01634 } 01635 } 01636 01637 void novo_programa() 01638 { 01639 01640 escolha = 0; 01641 check_cancela = 1; 01642 lcd.cls(); 01643 lcd.locate(1,0); 01644 lcd.printf("Este processo ira"); 01645 lcd.locate(5,1); 01646 lcd.printf("deletar"); 01647 lcd.locate(1,2); 01648 lcd.printf("o antigo programa"); 01649 wait(3); 01650 lcd.cls(); 01651 01652 while(check_cancela) 01653 { if(seguranca){ 01654 01655 sim_nao("Criar novo programa?"); 01656 if (escolha ==1) 01657 { 01658 lcd.cls(); 01659 programar(); 01660 select = 1; 01661 select1 = 0; 01662 cursor_row = 1; 01663 flagMenu = 0; 01664 break; 01665 } 01666 if (escolha == 2) 01667 { 01668 select = 1; 01669 select1 = 0; 01670 cursor_row = 1; 01671 flagMenu = 0; 01672 break; 01673 } 01674 } 01675 else{ 01676 pressionado(); 01677 break; 01678 } 01679 01680 } 01681 01682 if (!check_cancela) 01683 { 01684 lcd.cls(); 01685 lcd.locate(1,1); 01686 lcd.printf("Operacao cancelada"); 01687 wait(1.2); 01688 } 01689 select = 1; 01690 select1 = 0; 01691 cursor_row = 1; 01692 flagMenu = 0; 01693 check_cancela = 1; 01694 } 01695 01696 01697 void desliga(){ 01698 seguranca=0; 01699 } 01700 void liga(){ 01701 seguranca=1; 01702 flagMenu=1; 01703 select = 0; 01704 select1 = 0; 01705 cursor_row = 1; 01706 } 01707 01708 int main() { 01709 enableX = 1; 01710 enableY= 1; 01711 enableZ= 1; 01712 01713 Valvula_embolo = 0; 01714 Valvula_ponta = 1; 01715 01716 Emergencia.fall(&desliga); 01717 Emergencia.rise(&liga); 01718 01719 X.rise(&eixox); 01720 Y.rise(&eixoy); 01721 Z.rise(&eixoz); 01722 cancelar.rise(&cancela); 01723 desliga_eixos(); 01724 lcd.cls(); 01725 01726 button_UP.rise(&change_menu_UP); 01727 button_DOWN.rise(&change_menu_DOWN); 01728 enter.rise(&select_menu); 01729 if(Emerg){ 01730 Referenciar(); 01731 } 01732 else{ 01733 while(Emerg==0){ 01734 if (printou == 0){ 01735 pressionado(); 01736 } 01737 } 01738 Referenciar(); 01739 } 01740 01741 01742 cursor_row = 1; 01743 01744 while (true) 01745 { 01746 if (seguranca && Emerg){ 01747 printou = 0; 01748 if(!check_cancela) 01749 { 01750 select = 0; 01751 select1 = 0; 01752 cursor_row = 1; 01753 check_cancela = 1; 01754 flagMenu = 1; 01755 } 01756 if (flagMenu) 01757 { 01758 01759 if (flagSelect) 01760 { 01761 check_cancela = 1; 01762 if (select ==0) 01763 { 01764 select = cursor_row; 01765 cursor_row = 0; 01766 } 01767 else if (cursor_row ==0) 01768 { 01769 select = 0; 01770 select1 = 0; 01771 } 01772 else if(select !=0 && select1 ==0) 01773 { 01774 select1 = select; 01775 select = cursor_row; 01776 } 01777 else 01778 { 01779 select1 = cursor_row; 01780 } 01781 cursor_row = 1; 01782 flagSelect = !flagSelect; 01783 01784 } 01785 01786 disable_buttons(); 01787 switch(select1) 01788 { 01789 case 0: 01790 switch(select) 01791 { 01792 case 0: 01793 Menu_Inicial(); 01794 break; 01795 case 1: 01796 Menu_Programar(); 01797 break; 01798 case 2: 01799 Referenciar(); 01800 if(seguranca){ 01801 Menu_Inicial(); 01802 } 01803 break; 01804 case 3: 01805 Vazao(); 01806 break; 01807 }; 01808 break; 01809 01810 case 1: 01811 int iter = 21; 01812 switch(select) 01813 { 01814 case 0: 01815 Menu_Inicial(); 01816 break; 01817 //Iniciar 01818 case 1: 01819 lcd.cls(); 01820 lcd.printf("Quantas iteracoes?"); 01821 lcd.locate(7,2); 01822 lcd.printf("N = "); 01823 cursor_row = 1; 01824 flagMenu = 1; 01825 flagSelect = 0; 01826 01827 while(check_cancela) 01828 { 01829 if(seguranca) 01830 { 01831 if(flagMenu) 01832 { 01833 disable_buttons(); 01834 if(cursor_row >= 21) 01835 { 01836 cursor_row = 1; 01837 } 01838 if(cursor_row <= 0) 01839 { 01840 cursor_row = 20; 01841 } 01842 01843 if(flagSelect) 01844 { 01845 iteracoes = iter - cursor_row; 01846 cursor_row = 1; 01847 flagSelect = !flagSelect; 01848 break; 01849 } 01850 01851 lcd.locate(12,2); 01852 lcd.printf(" "); 01853 lcd.locate(11,2); 01854 lcd.printf("%i", iter - cursor_row); 01855 flagMenu = !flagMenu; 01856 wait(0.2); 01857 enable_buttons(); 01858 } 01859 } 01860 else 01861 { 01862 break; 01863 } 01864 01865 } 01866 01867 disable_buttons(); 01868 lcd.cls(); 01869 lcd.locate(2,1); 01870 lcd.printf("Rodando codigo"); 01871 lcd.locate(2,2); 01872 lcd.printf("iteracao:"); 01873 select = 0; 01874 while(select < iteracoes && check_cancela) 01875 { 01876 if(seguranca){ 01877 lcd.locate(11,2); 01878 lcd. printf("%d",select+1); 01879 rodar_programa(); 01880 select++; 01881 } 01882 else{ 01883 pressionado(); 01884 break; 01885 } 01886 } 01887 01888 if (!check_cancela) 01889 { 01890 lcd.cls(); 01891 lcd.locate(1,1); 01892 lcd.printf("Operacao cancelada"); 01893 wait(1.2); 01894 } 01895 if (!seguranca) 01896 { 01897 pressionado(); 01898 } 01899 check_cancela = 1; 01900 select1 = 0; 01901 select = 0; 01902 flagMenu = 1; 01903 cursor_row =1; 01904 select_menu(); 01905 break; 01906 //Editar 01907 case 2: 01908 Programar_editar(); 01909 break; 01910 //Novo Programa 01911 case 3: 01912 novo_programa(); 01913 check_cancela = 1; 01914 break; 01915 }; 01916 break; 01917 01918 } 01919 01920 enable_buttons(); 01921 01922 flagMenu = !flagMenu; 01923 01924 } 01925 } 01926 else{ 01927 pressionado(); 01928 } 01929 } 01930 }
Generated on Tue Jul 26 2022 01:17:22 by
1.7.2