Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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