
Projeto Mecatronico Grupo: Pingos nos I's 2019
Dependencies: mbed Projeto_Mecatronico Projeto_Mecat_Pingos
Diff: main.cpp
- Revision:
- 0:61ea5c9ad2de
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Jun 13 19:46:46 2019 +0000 @@ -0,0 +1,1717 @@ +#include "mbed.h" +#include "TextLCD.h" +//#include "LinkedList.h" +#define espera 100 +#define vel_1 1000 +#define vel_2 1000 +//bibliteca segmento: TextLCD +/* +O QUE FAZER +1-aarrumar o print do COLA? qnd ponto modificado +2-arrrumar a listadecola quando ponto modificado +*/ + + +//---------------------------------------------------------------------------------ENTRADAS E SAIDAS ANALOGICAS--------------------------------------------------------------------------------------------/ +//DigitalIn botaoC(PC_1);// //pino entrada botaoC +//DigitalIn botaoA(PC_2); // //pino entrada botaoA colar pontos +int botaoA=1; +int botaoC=1; +DigitalIn botao_analog(PC_12); +//int botao_analog = 1; +AnalogIn eixo_x(A0); +AnalogIn eixo_y(A2); + +DigitalOut enable_x(PA_10);//motor x +DigitalOut dir_x(PB_5);//motor x +DigitalOut step_x(PB_3);//motor x +DigitalIn FimCursoX(PA_6); //entrada fdc eixo x novo + +DigitalOut enable_y(PB_4);//motor y +DigitalOut dir_y(PA_8);//motor y +DigitalOut step_y(PB_10);//motor y +DigitalIn FimCursoY(PC_8); //entrada fdc eixo y novo + +DigitalOut enable_z(PA_9);//motor z +DigitalOut dir_z(PB_6);//motor z +DigitalOut step_z(PC_7);//motor z + +DigitalIn FimCursoZ(PB_7); //entrada fdc eixo z novo + +DigitalIn botao_emergencia(PA_13); //entrada B.E. nova +DigitalOut aciona_pneu(PC_3);//aciona pneumatica da cola PRESSAO +DigitalOut aciona_pneu2(PC_2);//aciona pneumatica da cola VALVULA +//----------------------------------IHM +TextLCD lcd(PC_13, PA_15, PA_12, PA_11, PB_12, PB_11, TextLCD::LCD20x4); // rs, e , d4-d7 +DigitalIn botao_cima(PB_2); +DigitalIn botao_enter(PB_1); +DigitalIn botao_baixo(PB_15); + +int menu = 1; // Aqui será a seleção dos menus do IHM +int menu_enter = 0;//referenciando menu se refe =1 +int menu_enter_2 = 0;//menu 2 ADICONAR PONTOS/ MODIFICAR PONTOS COLAR PONTOS +int flag = 1; +char strings_x[5]={0,0,0,0,0}; +char ident_eixo; +int i = 1; //contador de chars +int linha = 0;//para descer o " >" +int ponto = 0;//valor de um ponto +int pontos[10];//numero de pontos +int cola[10];//lista para saber se ira aplicar cola entre os pontos +int i_c = 0;// indice da lista cola +int i_p = 0; //loop i pontos +int ultimo_p = 0; +int lista_vel[]={1000,700,500};//lista velocidade dos motores +int i_v = 0;//indice lista velocidade +int vel = 0;//velocidade dos motores +int mover_motores = 0;//permite permitir mover os motores +int flag_mod = 0;//flag de modificar pontos para add pontos +int flag_mod2 = 0;//flag de modificar pontos para add COLA +int flag_emergencia = 0;// flag botao de emergencia +int flag_emergencia2 = 0;// flag botao de emergencia 2 +int vai_emergencia = 0;// variavel para ser usado a funcao " go to" + +Serial pc(USBTX , USBRX);// band rate é de 1152000 na Serial Port do Tera Term +//------------------------------------------------------------------------------------------VARIÁVEIS-------------------------------------------------------------------------------------------------------/ + +float passo = 1.8f; //1.8 graus por passo +float x ; //valor do INPUT analog x +float y ;//valor do INPUT analog Y +bool refe; //selecionar a rotina de referenciamento +bool troca_yz;//troca o eixo y/z +int posicao_x; //Posicao do passo atual EIXO X +int posicao_y;//Posicao do passo atual EIXO Y +int posicao_z;//Posicao do passo atual EIXO Y +int i_x = -1; // contador lista x +int i_y = -1; // contador lista y +int i_z = -1; // contador lista z +int pontos_x[10]; //lista de pontos X +int pontos_y[10];//lista de pontos Y +int pontos_z[10];//lista de pontos Z +int add; +int pos; +int guardar_pontos = 0;//flag para ir ao condicional "guardar pontos" +int colar_pontos = 0;//flag para ir ao condicional "ir aos pontos" +//LinkedList<float>pontos; + +//------------------------------------------------------------------------------------------DEFINICAO DAS FUNÇÕES--------------------------------------------------------------------------------------------------------/ + +float passo_mm_xy (int passo_atual) + { + float conversao = (passo_atual*3)/200; + return conversao; + } +float passo_mm_z (int passo_atual) + { + float conversao = (passo_atual*10)/200; + return conversao; + } + + +void move_inicial(bool dir, float vel, bool fimcurso, int qual_eixo) //dir 0 ou 1 vel em [passos/s] fimcurso x/y qual_eixo x/y/z = 0/1/2 + { + //vel = (2*1000) / (vel); + vel = 1000000 / (vel); + vel = vel - espera; + if (qual_eixo == 0) + { + while(FimCursoX == 0) + { + + + step_x = 1; + wait_us(espera); + step_x = 0; + wait_us(vel); + if (botao_emergencia == 0) + { + flag_emergencia2 = 1; + break; + } + } + }//qual eixo == 0 = X + if (qual_eixo == 1) + { + while(FimCursoY == 0) + { + step_y = 1; + wait_us(espera); + step_y = 0; + wait_us(vel); + if (botao_emergencia == 0) + { + flag_emergencia2 = 1; + break; + } + } + }//qual eixo == 0 = Y + if (qual_eixo == 2) + { + while(FimCursoZ == 0) + { + step_z = 1; + wait_us(espera); + step_z = 0; + wait_us(vel); + if (botao_emergencia == 0) + { + flag_emergencia2 = 1; + break; + } + } + }//qual eixo == 0 = Z + } + + +int move(bool dir, float vel,int posicao_xy, int qual_eixo) //dir 0 ou 1 vel em [passos/s] posicao, devolve os passos andados qual_eixo 0/1/2 x/y/z + { + int passos = 0; + int ultimo_passo =0; + int parada; + //vel = (2*1000) / (vel); + vel = 1000000 / (vel); + vel = vel - espera; + if (enable_x == 0 and qual_eixo == 0 ) //PARA EIXO X + { + ultimo_passo = posicao_xy; + //while ((eixo_x.read() > 0.7 or eixo_x.read() < 0.3f) and posicao_x > -1 ) + while ((eixo_x > 0.7 or eixo_x < 0.3f) and posicao_x > -1 ) + { step_x = 1; + wait_us(espera); + step_x = 0; + wait_us(vel); + passos++; + if (dir_x == 0) + { + parada = ultimo_passo + passos; + // pc.printf("dir_x1 \r\n"); + } + if (dir_x == 1) + { + parada = ultimo_passo - passos; + // pc.printf("dir_x0 \r\n"); + } + if (parada == 0 or parada == 25000) + { + break; + } + + } + } + if (enable_y == 0 and qual_eixo == 1 ) //PARA EIXO Y + { + ultimo_passo = posicao_xy; + //while ((eixo_y.read() > 0.7 or eixo_y.read() < 0.3f) and posicao_y > -1 ) + while ((eixo_y > 0.7 or eixo_y < 0.3f) and posicao_y > -1 ) + { + step_y = 1; + wait_us(espera); + step_y = 0; + wait_us(vel); + passos++; + //pc.printf("%d \r\n",passos_y); + if (dir_y == 0) + { + parada = ultimo_passo + passos; + // pc.printf("dir_y1 \r\n"); + } + if (dir_y == 1) + { + parada = ultimo_passo - passos; + // pc.printf("dir_y0 \r\n"); + } + if (parada == 0 or parada == 26000) + { + break; + } + //pc.printf("ultimo passo:%d i: %d \r\n",parada,passos); + } + } + if (enable_z == 0 and qual_eixo == 2 ) //PARA EIXO Z + { + ultimo_passo = posicao_xy; + // while ((eixo_y.read() > 0.7 or eixo_y.read() < 0.3f) ) + while ((eixo_y > 0.7 or eixo_y < 0.3f) ) + { + step_z = 1; + wait_us(espera); + step_z = 0; + wait_us(vel); + passos++; + //pc.printf("%d \r\n",passos_y); + if (dir_z == 0) + { + parada = ultimo_passo + passos; + // pc.printf("dir_y1 \r\n"); + } + if (dir_z == 1) + { + parada = ultimo_passo - passos; + // pc.printf("dir_y0 \r\n"); + } + if (parada == 0 or parada == 2000) + { + break; + } + //pc.printf("ultimo passo:%d i: %d \r\n",parada,passos); + } + } + return passos; + } +void para()//funçao para desativar o motor + { + enable_x = 1; + } + +void para_()//funçao para desativar o motor + { + enable_y = 1; + enable_z = 1; + } + +int movepara(int dir, float vel, int passo_,int qual_eixo ) +{ + vel = 1000000 / (vel); + vel = vel - espera; + int passo_atual = 0; + // pc.printf("Passo_local %i, %i ", passo_atual, passo_ ); + + if (enable_x == 0 and qual_eixo == 0 ) //PARA EIXO X + { + while (passo_atual != abs(passo_)) + { step_x = 1; + wait_us(espera); + step_x = 0; + wait_us(vel); + passo_atual++ ; + if (botao_emergencia == 0) + { + flag_emergencia2 = 1; + break; + } + // pc.printf("Passo_local %i, %i ", passo_atual, passo_ ); + } + } + if (enable_y == 0 and qual_eixo == 1 ) //PARA EIXO Y + { + while (passo_atual != abs(passo_)) + { step_y = 1; + wait_us(espera); + step_y = 0; + wait_us(vel); + passo_atual++ ; + if (botao_emergencia == 0) + { + flag_emergencia2 = 1; + break; + } + // pc.printf("Passo_local %i, %i ", passo_atual, passo_ ); + } + } + if (enable_z == 0 and qual_eixo == 2 ) //PARA EIXO Z + { + while (passo_atual != abs(passo_)) + { step_z = 1; + wait_us(espera); + step_z = 0; + wait_us(vel); + passo_atual++ ; + if (botao_emergencia == 0) + { + flag_emergencia2 = 1; + break; + } + // pc.printf("Passo_local %i, %i ", passo_atual, passo_ ); + } + } + return passo_atual; +} + +//----------------------------------------------------------------------------------------------MAIN------------------------------------------------------------------------------------------------------------/ +int main() +{ + lcd.setCursor(TextLCD::CurOff_BlkOff);//desliga o cursor + posicao_x = 0; + posicao_y = 0; + posicao_z = 0; + refe = 0 ; //0 ou 1 1= REFERENCIAMENTO 0 = MOVIMENTO DOS EIXOS + troca_yz = 0; // 0 ou 1 0 = EIXO Y 1 = EIXO Z + pos = 0; + pc.baud(115200); + pc.printf("hello WORLD!\r\n"); + enable_x = 1;//desliga os drivers + enable_y = 1;//desliga os drivers + enable_z = 1;//desliga os drivers + aciona_pneu2 = 1 ; //desliga pneu + aciona_pneu = 1 ; //desliga pneu + vel = lista_vel[0];//velocidade inicial + wait(0.25); + while(1) + { + + if (botao_emergencia == 1) + { + if (flag_emergencia == 1) + { + lcd.setCursor(TextLCD::CurOff_BlkOff);//desliga o cursor + lcd.cls(); + menu = 0; + menu = 1; + menu_enter_2 = 0 ; + flag_emergencia = 0; + } + if (menu == 1 ) + { + lcd.cls(); + lcd.printf(" -Referenciamento\n"); + lcd.printf(" -Limpar Bico Ejetor"); + lcd.printf(" -Aplicar Cola\n"); + lcd.printf(" -Configuracoes\n"); + lcd.locate(0,linha); + lcd.putc('~'); + + menu = 0; + }// if menu = 1 + if (botao_cima == 1 and menu ==0) + { + pc.printf("menu %d \r\n",menu); + pc.printf("botao_cima \r\n"); + lcd.cls(); + lcd.printf(" -Referenciamento\n"); + lcd.printf(" -Limpar Bico Ejetor"); + lcd.printf(" -Aplicar Cola\n"); + lcd.printf(" -Configuracoes\n"); + linha--; + pc.printf(" %d\r\n",linha); + if (linha < 0) + { + linha = 3; + } + lcd.locate(0,linha); + lcd.putc('~'); + + wait(0.2); + }//IF botao_cima + //-------------------------------------------------------------------------------------BOTAO BAIXO MENU = 1 ----------------------------------------------------------------- + if (botao_baixo == 1 and menu ==0) + { + pc.printf("menu %d\r\n",menu); + pc.printf("botao_baixo \r\n"); + lcd.cls(); + lcd.printf(" -Referenciamento\n"); + lcd.printf(" -Limpar Bico Ejetor"); + lcd.printf(" -Aplicar Cola\n"); + lcd.printf(" -Configuracoes\n"); + if (linha > 2) + { + linha = -1; + } + linha++; + pc.printf(" %d\r\n",linha); + lcd.locate(0,linha); + lcd.putc('~'); + wait(0.2); + }// if botao_baixo + + + if (botao_enter == 1 and menu==0) + { + pc.printf("botao_enter \r\n"); + pc.printf(" %d\r\n",linha); + + if (linha ==0) + { + menu_enter =1; // REFERERENCIAMENTO + refe = 1; + wait(0.2); + } + if (linha == 1) + { + menu_enter = 2;//LIMPAR BI EJETOR + } + if (linha == 2) + { + menu_enter = 3;//Aplicar COla + linha =0; + } + if (linha == 3) + { + menu_enter = 5;//Aplicar COla + linha =0; + } + + pc.printf(" %d\r\n",linha); + wait(0.2); + }// if bbotao_enter\ + //-------------------------------------------------------------------------------------LIMPAR BICO EJETOR ----------------------------------------------------------------- + if (menu_enter == 2) + { + lcd.cls(); + lcd.printf("\n"); + aciona_pneu = 0;// liga pneumatica pressao + lcd.printf(" Limpando.\n"); + aciona_pneu2 = 0;// liga pneumatica pressao + wait(0.5); + lcd.cls(); + lcd.printf("\n"); + lcd.printf(" Limpando..\n"); + aciona_pneu2 = 1;// liga pneumatica pressao + wait(0.5); + lcd.cls(); + lcd.printf("\n"); + lcd.printf(" Limpando...\n"); + aciona_pneu2 = 0;// liga pneumatica pressao + wait(1); + lcd.cls(); + aciona_pneu2 = 1;// liga pneumatica pressao + lcd.printf("\n"); + lcd.printf(" Bico Limpo!\n"); + wait(2); + lcd.cls(); + menu = 1; + menu_enter = 0; + + } + + //-------------------------------------------------------------------------------------APLICAR COLA MENU_ENTER = 3 ----------------------------------------------------------------- + if (menu_enter == 3) + { + linha = 0; + lcd.cls(); + lcd.printf(" -Adicionar Pontos \n"); + lcd.printf(" -Mod./Ver Pontos \n"); + lcd.printf("\n"); + lcd.printf(" Voltar Colar\n"); + lcd.locate(0,linha); + lcd.putc('~'); + menu = 2; + menu_enter = 4;//para o refresh rate + pc.printf("menu %d\r\n",menu); + }// Aplicar Cola + //-------------------------------------------------------------------------------------BOTAO CIMA ------------------------------------------------------------- + if (botao_cima == 1) + { + if (menu == 2) + { + pc.printf("menu %d\r\n",menu); + pc.printf("botao_cima menu 2\r\n"); + lcd.cls(); + lcd.printf(" -Adicionar Pontos \n"); + lcd.printf(" -Mod./Ver Pontos \n"); + lcd.printf("\n"); + lcd.printf(" Voltar Colar\n"); + menu = 2; + linha--; + pc.printf(" %d\r\n",linha); + if (linha < 0) + { + linha = 4; + lcd.locate(0,0); + lcd.putc(' '); + lcd.locate(14,linha); + lcd.putc('~'); + } + if(linha == 2) + { + linha = 1; + } + lcd.locate(0,linha); + lcd.putc('~'); + if (linha == 4) + { + lcd.locate(0,3); + lcd.putc(' '); + lcd.locate(14,linha); + lcd.putc('~'); + } + wait(0.2); + + } + if (menu == 3 or menu == 4)//-----------------------------------------------------------------add pontos-BB------------------------------------------------------------- + { + + menu_enter_2 = 0;//para o refresh rate + linha--; + if (linha == 1) + { + linha = 3; + } + if (linha == 2) + { + lcd.locate(0,linha + 1); + lcd.putc(' '); + lcd.locate(0,linha); + lcd.putc('~'); + } + if (linha == 3) + { + lcd.locate(0,linha - 1); + lcd.putc(' '); + lcd.locate(0,linha); + lcd.putc('~'); + } + + wait(0.2); + } + if (menu == 5)//-----------------------------------------------------------------Modificando Pontos---BC----------------------------------------------------------- + { + if (i_p == 0) + { + + + pc.printf(" %d\r\n",linha); + linha--; + if (linha == 1) + { + lcd.locate(10,linha+1); + lcd.putc(' '); + lcd.locate(0,3); + lcd.putc('~'); + linha = 4; + } + if (linha == 2) + { + lcd.locate(10,linha + 1); + lcd.putc(' '); + lcd.locate(10,linha); + lcd.putc('~'); + } + if (linha == 3) + { + lcd.locate(0,linha); + lcd.putc(' '); + lcd.locate(10,linha); + lcd.putc('~'); + } + + wait(0.2); + } + if (i_p != 0 and i_p != ultimo_p -1) + { + + + + + + linha--; + printf("linha %d\r\n",linha); + if (linha == 1)// + { + lcd.locate(10,linha+1); + lcd.putc(' '); + lcd.locate(0,2); + lcd.putc('~'); + linha = 5; + } + if (linha == 2) + { + lcd.locate(10,linha + 1); + lcd.putc(' '); + lcd.locate(10,linha); + lcd.putc('~'); + } + if (linha == 3) + { + lcd.locate(0,linha); + lcd.putc(' '); + lcd.locate(10,linha); + lcd.putc('~'); + } + if (linha == 4) + { + lcd.locate(0,2); + lcd.putc(' '); + lcd.locate(0,3); + lcd.putc('~'); + } + + wait(0.2); + } + if (i_p != 0 and i_p == ultimo_p -1) + { + + linha--; + pc.printf("linha %d\r\n",linha); + + if (linha == 2) + { + lcd.locate(10,linha + 1); + lcd.putc(' '); + lcd.locate(0,linha); + lcd.putc('~'); + linha = 5; + } + if (linha == 3) + { + lcd.locate(0,linha); + lcd.putc(' '); + lcd.locate(10,linha); + lcd.putc('~'); + } + if (linha == 4) + { + lcd.locate(0,2); + lcd.putc(' '); + lcd.locate(0,3); + lcd.putc('~'); + } + + wait(0.2); + } + } + if(menu == 6)//-----------------------------------------------------------------Configuracoes-------------------------------------------------------------- + { + pc.printf(" %d\r\n",linha); + + + + if (linha == 3) + { + linha = 1; + } + linha--; + + if (linha == -1) + { + lcd.locate(0,0); + lcd.putc(' '); + lcd.locate(0,3); + lcd.putc('~'); + linha = 3; + } + if (linha == 0) + { + lcd.locate(0,3); + lcd.putc(' '); + lcd.locate(0,0); + lcd.putc('~'); + linha = 0; + } + wait(0.2); + } + }//IF botao_cima + //-------------------------------------------------------------------------------------BOTAO BAIXO MENU = 2 ----BB------------------------------------------------------------- + if (botao_baixo == 1) + { + if (menu == 2) + { + pc.printf("menu %d\r\n",menu); + pc.printf("botao_baixo menu 2\r\n"); + lcd.cls(); + lcd.printf(" -Adicionar Pontos \n"); + lcd.printf(" -Mod./Ver Pontos \n"); + lcd.printf("\n"); + lcd.printf(" Voltar Colar\n"); + menu = 2; + + if (linha > 3) + { + linha = -1; + } + + pc.printf(" %d\r\n",linha); + linha++; + if(linha == 2) + { + linha = 3; + } + lcd.locate(0,linha); + lcd.putc('~'); + if (linha == 4) + { + lcd.locate(0,linha-1); + lcd.putc(' '); + lcd.locate(14,linha); + lcd.putc('~'); + } + wait(0.2); + } + if (menu == 3 or menu == 4)//-----------------------------------------------------------------add pontos-BB------------------------------------------------------------- + { + if (linha == 3) + { + linha = 1; + } + menu_enter_2 = 0;//para o refresh rate + linha++; + pc.printf("Botao Baixo\r\n"); + pc.printf("menu%d linha=%d\r\n",menu,linha); + if (linha == 3) + { + lcd.locate(0,linha - 1); + lcd.putc(' '); + lcd.locate(0,linha); + lcd.putc('~'); + } + if (linha == 2) + { + lcd.locate(0,linha +1); + lcd.putc(' '); + lcd.locate(0,linha); + lcd.putc('~'); + } + wait(0.2); + } + if (menu == 5)//-----------------------------------------------------------------Modificando Pontos---BB----------------------------------------------------------- + { + if (i_p == 0) + { + if (linha > 3) + { + lcd.locate(0,3); + lcd.putc(' '); + lcd.locate(10,2); + lcd.putc('~'); + linha = 1; + } + + pc.printf(" %d\r\n",linha); + linha++; + if (linha == 3) + { + lcd.locate(10,linha-1); + lcd.putc(' '); + lcd.locate(10,linha); + lcd.putc('~'); + } + if (linha == 4) + { + lcd.locate(10,linha-1); + lcd.putc(' '); + lcd.locate(0,linha-1); + lcd.putc('~'); + } + wait(0.2); + } + if (i_p != 0 and i_p != ultimo_p -1) + { + if (linha > 4)//"proximo" + { + lcd.locate(0,2); + lcd.putc(' '); + lcd.locate(10,2); + lcd.putc('~'); + linha = 1; + } + + pc.printf(" %d\r\n",linha); + linha++; + if (linha == 3)//"Modificar" + { + lcd.locate(10,linha-1); + lcd.putc(' '); + lcd.locate(10,linha); + lcd.putc('~'); + } + if (linha == 4)//"voltarr" + { + lcd.locate(10,3); + lcd.putc(' '); + lcd.locate(0,3); + lcd.putc('~'); + } + if (linha == 5)//"Anterior" + { + lcd.locate(0,3); + lcd.putc(' '); + lcd.locate(0,2); + lcd.putc('~'); + } + wait(0.2); + } + if (i_p != 0 and i_p == ultimo_p -1) + { + if (linha == 5) + { + linha = 2; + } + + linha++; + if (linha == 3)//"Modificar" + { + lcd.locate(0,linha-1); + lcd.putc(' '); + lcd.locate(10,linha); + lcd.putc('~'); + } + if (linha == 4)//"voltarr" + { + lcd.locate(10,3); + lcd.putc(' '); + lcd.locate(0,3); + lcd.putc('~'); + } + + if (linha == 5)//"Anterior" + { + lcd.locate(0,3); + lcd.putc(' '); + lcd.locate(0,2); + lcd.putc('~'); + } + + pc.printf(" %d\r\n",linha); + wait(0.2); + } + } + if(menu == 6)//-----------------------------------------------------------------Configuracoes--BB------------------------------------------------------------ + { + pc.printf(" %d\r\n",linha); + + + if (linha == 0) + { + linha = 2; + } + if (linha == 3) + { + linha = 0; + } + linha++; + + if (linha == 3) + { + lcd.locate(0,0); + lcd.putc(' '); + lcd.locate(0,linha); + lcd.putc('~'); + } + if (linha == 1) + { + lcd.locate(0,3); + lcd.putc(' '); + lcd.locate(0,0); + lcd.putc('~'); + linha = 0; + } + wait(0.2); + } + }// if botao_baixo + //-------------------------------------------------------------------------------------BOTAO ENTER MENU = 2 --BE--------------------------------------------------------------- + if (botao_enter == 1 ) + { + pc.printf("menu%d linha %d\r\n",menu,linha); + + if (menu == 2) + { + pc.printf(" %d\r\n",linha); + if (linha ==0) + { + //pc.printf("vai para PONTOS\r\n"); + menu_enter_2 =1; // ADICIONAR PONTOS + menu = 0; + mover_motores = 1; + } + if (linha ==1) + { + menu_enter_2 = 4; // MODIFICAR PONTOS + i_p = 0;//zerar + } + if (linha == 4)//COLAR PONTOS + { + pc.printf("Vai para funcao COlar Pontos\r\n"); + menu = 2;//tela de "aplicar pontas" + colar_pontos = 1;//menu colar pontos + wait(0.2); + } + if (linha == 3) + { + menu = 1 ;//VOltar + linha = 1; + } + pc.printf(" %d\r\n",linha); + wait(0.2); + } + if (menu == 3)//Adicionado os pontos + { + if (linha == 2)//confirmar ponto + { + + if ( flag_mod == 0) + { + pc.printf("flag_mod = 0 \r\n"); + i_p++; + guardar_pontos = 1;// vai para o condicional "guardar Pontos" + wait(0.1); + } + + + ultimo_p = i_p; + menu_enter_2 = 1 ;//Ponto Adicionado! + + linha = 0; + ponto = ponto + 10; + wait(0.2); + if( i_p > 1) + { + menu_enter_2 = 2; + } + if ( flag_mod == 1) + { + pc.printf("flag_mod = 1 \r\n"); + pontos_x[i_p] = posicao_x; + pontos_y[i_p] = posicao_y; + pontos_z[i_p] = posicao_z; + pc.printf(" Pontos X[%i]=%i Pontos Y[%i]=%i Pontos Z[%i]=%i \r\n",i_p, pontos_x[i_p],i_p, pontos_y[i_p ],i_p, pontos_z[i_p]); + flag_mod = 0;//tira flag de modificar pontos + menu_enter_2 = 2; + wait(0.2); + + } + + wait(0.2); + } + if (linha == 3) + { + menu_enter = 3 ;//VOltar + linha = 0; + wait(0.2); + } + }//menu = 3 + if (menu == 4)//------------------COla-BE + { + pc.printf(" -->COLA-BE: flag_mod2 = %d\r\n",flag_mod2); + if (flag_mod2 == 0) + { + if (linha == 2) + { + pc.printf(" COla[%d] = 1\r\n",i_c); + menu_enter_2 = 1; + cola[i_c] = 1; + } + if (linha == 3) + { + pc.printf(" COla[%d] = 0\r\n",i_c); + menu_enter_2 = 1 ;//VOltar + + cola[i_c] = 0; + } + } + if (flag_mod2 == 1) + { + pc.printf(" menu_enter = 3\r\n"); + if (linha == 2) + { + pc.printf(" COla[%d] = 1\r\n",i_p-1); + menu_enter_2 = 1; + cola[i_p-1] = 1; + } + if (linha == 3) + { + pc.printf(" COla[%d] = 0\r\n",i_p-1); + menu_enter_2 = 1 ;//VOltar + + cola[i_p-1] = 0; + } + menu_enter = 3;//volta para a tela de "add pontos" + wait(0.1); + } + flag_mod2 = 0;//tira flag de modificar pontos + wait(0.2); + flag_mod = 0; + i_c++; + }//menu = 4 + if (menu == 5) //MODIFICANDO OS PONTOS-BE + { + + if (i_p != 0) + { + if ( linha == 2) + { + i_p++; + menu_enter_2 = 4; + wait(0.2); + } + if ( linha == 3) + { + menu_enter_2 = 1; + flag_mod = 1; + flag_mod2= 1; + pc.printf("Mod!"); + wait(0.2); + } + if ( linha == 4) + { + pc.printf("voltar!"); + menu_enter = 3 ;//VOltar + linha = 1; + wait(0.2); + } + if ( linha == 5) + { + i_p--; + menu_enter_2 = 4; + wait(0.2); + } + } + if (i_p == 0) + { + if ( linha == 2) + { + i_p++; + menu_enter_2 = 4; + wait(0.2); + } + if ( linha == 3) + { + menu_enter_2 = 1; + pc.printf("Mod!"); + wait(0.2); + } + if ( linha == 4) + { + pc.printf("Mod!"); + menu_enter = 3 ;//VOltar + linha = 1; + wait(0.2); + } + } + } + if (menu == 6)//-----------------------------------------------------------------Configuracoes-------------------------------------------------------------- + { + if ( linha == 0) + { + i_v++; + if (i_v == 3) + { + i_v = 0; + } + vel = lista_vel[i_v]; + wait(0.2); + menu_enter = 5; + + + } + if ( linha == 2) + { + lcd.locate(2,2); + lcd.putc(' '); + lcd.locate(3,2); + lcd.putc(' '); + lcd.locate(4,2); + lcd.putc(' '); + lcd.locate(2,2); + lcd.putc('N'); + lcd.locate(3,2); + lcd.putc('a'); + lcd.locate(4,2); + lcd.putc('o'); + } + if ( linha == 3) + { + pc.printf("Mod!"); + menu = 1 ;//VOltar + linha = 1; + wait(0.2); + } + + } + + }// if bbotao_enter\ + //-------------------------------------------------------------------------------------ADICIONAR PONTOS ----------------------------------------------------------------- + if (menu_enter_2 == 1) + { + pc.printf("ADICIONAR PONTOS\r\n"); + pc.printf("i_p = %d ", i_p); + lcd.cls(); + linha = 2; + pontos[i_p] = ponto; + pc.printf("Ponto %d \r\n",i_p); + pc.printf("X:%d Y:%d Z:%d \r\n",posicao_x,posicao_y,posicao_z); + float posicao_x_f = passo_mm_xy(posicao_x); + float posicao_y_f = passo_mm_xy(posicao_y); + float posicao_z_f = passo_mm_z(posicao_z); + lcd.printf("Pontos %d \n",i_p); + lcd.printf("X:%.0f Y:%.0f Z:%.0f\n",posicao_x_f,posicao_y_f,posicao_z_f); + lcd.printf(" Confirmar\n"); + lcd.printf(" Voltar\n"); + lcd.locate(0,linha); + lcd.putc('~'); + + + + menu = 3; + menu_enter_2 = 0;//para o refresh rate + }// Adiciona Pontos + //-------------------------------------------------------------------------------------Cola nos pontos? ----------------------------------------------------------------- + if (menu_enter_2 == 2) + { + pc.printf("Cola pontos?\r\n"); + lcd.cls(); + linha = 2; + lcd.printf("Colar entre?\n"); + pc.printf("flag_mod2 = %d\r\n",flag_mod2); + if ( flag_mod2 == 0) + { + lcd.printf(" P%i e P%i\n",i_p - 2,i_p - 1); + } + if ( flag_mod2 == 1) + { + lcd.printf(" P%i e P%i\n",i_p - 1,i_p); + } + lcd.printf(" Sim\n"); + lcd.printf(" Nao\n"); + lcd.locate(0,linha); + lcd.putc('~'); + + + menu = 4; + menu_enter_2 = 0;//para o refresh rate + }// Adiciona Pontos + //-------------------------------------------------------------------------------------MODIFICAR PONTOS ----------------------------------------------------------------- + if (menu_enter_2 == 4) + { + + pc.printf("Modificar Pontos\r\n"); + pc.printf("i_p = %d ", i_p); + lcd.cls(); + linha = 2; + pontos[i_p] = ponto; + pc.printf("Pontos %d\r\n",i_p); + pc.printf("X:%d Y:%d Z:%d \r\n",pontos_x[i_p],pontos_y[i_p],pontos_z[i_p]); + float posicao_x_f = passo_mm_xy(pontos_x[i_p]); + float posicao_y_f = passo_mm_xy(pontos_y[i_p]); + float posicao_z_f = passo_mm_z(pontos_z[i_p]); + if (i_p != 0) + { + pc.printf("i_c = %d ", i_c); + if ( cola[i_p - 1] == 1) + { + lcd.printf("Ponto %d P%d->P%d=S",i_p,i_p-1 ,i_p); + lcd.printf("\n"); + lcd.printf("X:%.0f Y:%.0f Z:%.0f\n",posicao_x_f,posicao_y_f,posicao_z_f); + } + if ( cola[i_p - 1] == 0) + { + lcd.printf("Ponto %d P%d->P%d=N",i_p,i_p-1 ,i_p); + lcd.printf("\n"); + lcd.printf("X:%.0f Y:%.0f Z:%.0f\n",posicao_x_f,posicao_y_f,posicao_z_f); + } + } + + if ( i_p == 0) + { + + lcd.printf("Ponto 0 "); + lcd.printf("\n"); + lcd.printf("X:%.0f Y:%.0f Z:%.0f\n",posicao_x_f,posicao_y_f,posicao_z_f); + lcd.printf(" Proximo\n"); + lcd.printf(" Voltar Modificar\n"); + lcd.locate(10,linha); + lcd.putc('~'); + } + if (i_p != 0 and i_p != ultimo_p -1) + { + lcd.printf(" Anterior Proximo\n"); + lcd.printf(" Voltar Modificar\n"); + lcd.locate(10,linha); + lcd.putc('~'); + } + pc.printf("ultimo_p = %d \r\n",ultimo_p); + if (i_p != 0 and i_p == ultimo_p -1) + { + lcd.printf(" Anterior \n"); + lcd.printf(" Voltar Modificar\n"); + lcd.locate(0,linha); + lcd.putc('~'); + linha = 5; + } + + menu = 5; + menu_enter_2 = 0;//para o refresh rate + }// Adiciona Pontos + //----------------------------------------------------------------------------------------------Configuracoes-------------------------------------------------------------- + if ( menu_enter == 5) + { + pc.printf("Configuracoes\r\n"); + lcd.cls(); + linha = 0; + lcd.printf(" -Vel:%d[mm/s]\n",vel); + //lcd.printf(" -Cola nos Pontos?\n"); + //lcd.printf(" Sim \n"); + lcd.printf(" \n"); + lcd.printf(" \n"); + lcd.printf(" Voltar\n"); + lcd.locate(0,linha); + lcd.putc('~'); + + + menu = 6; + menu_enter = 0;//para o refresh rate + wait(0.1); + } + + //-----------------------------------REFERENCIANDO-----------------------------------------------------------/ + if(refe== 1) //comeca referenciamento roda uma vez + { + + //pc.printf("refe == 1 \r\n"); + enable_x = 0; + enable_y = 1; + enable_z = 1; + dir_x = 1; + //---------------IHM---------- + lcd.cls(); + lcd.printf(" Referenciando...\n"); + wait(0.25); + //----------------------------- + + move_inicial(dir_x,600,FimCursoX,0); + enable_x = 1; + // wait(2); + if (FimCursoX == 1) + { + pc.printf("Fim de Curso 1 X \r\n"); + // refe X + enable_x = 0; + dir_x = !dir_x ; + movepara(dir_x,600,200,0); + enable_x = 1; + posicao_x = 1; + pc.printf("Fim de Curso 2 X \r\n"); + } + enable_x = 1; + enable_y = 0; + enable_z = 1; + dir_y =1; + move_inicial(dir_y,600,FimCursoY,1); + enable_y = 1; + if (FimCursoY == 1) + { + pc.printf("Fim de Curso 1 Y \r\n"); + // refe Y + enable_y = 0; + dir_y = !dir_y ; + movepara(dir_y,vel,200,1); + enable_y = 1; + refe= 0; + posicao_y = 1; + pc.printf("Fim de Curso 2 Y \r\n"); + } + + dir_z =1; + enable_x = 1; + enable_y = 1; + enable_z = 0; + move_inicial(dir_z,450,FimCursoZ,2); + enable_z = 1; + + if (FimCursoZ == 1) + { + pc.printf("Fim de Curso 1 Z \r\n"); + // refe Y + enable_z = 0; + dir_z = !dir_z ; + movepara(dir_z,450,200,2); + enable_z = 1; + refe= 0; + posicao_z = 1; + pc.printf("Fim de Curso 2 Z \r\n"); + lcd.cls(); + //---------------IHM---------- + lcd.printf("Referenciamento\n"); + lcd.printf("Concluido!\n"); + wait(1); + lcd.cls(); + menu = 1; + //----------------------------- + } + } + + //---------------------------------------------------------------------------Drivers-------------------------------------------------------------------------------------------------------/ + //---------------------------------------------------------------------------LOOP DA MAQUINA-------------------------------------------------------------------------------------------------------/ + if (mover_motores == 1 and menu == 3 and flag_emergencia2 == 0) //fica preso no loop + { + + //pc.printf("refe == 0 \r\n"); + //Lendo JoyStick Analogico + x = eixo_x.read(); + y = eixo_y.read(); + //pc.printf("Posicao/Vel X: %f Y: %f.\r\n", x, y); + //Acionamento motor de Passo via Joystick + //-----------------------------------------JOYSTICK X------------------------------------------------------/ + + while (x < 0.3f and flag_emergencia2 == 0)// X+ + { enable_x = 0; + dir_x = 0; + //wait(espera); + x = eixo_x.read(); + //pc.printf("x> \r\n"); + if (botao_emergencia == 0) + { + flag_emergencia2 = 1; + break; + } + if (dir_x == 0 and posicao_x < 25000) + { + posicao_x = posicao_x + move(dir_x, vel,posicao_x,0) ; + // menu_enter_2 = 1; + + } + pc.printf("Posicao Passo X: %d. \r\n",posicao_x); + menu_enter_2 = 1; + } + while ( x > 0.7f and flag_emergencia2 == 0) //X- + { enable_x = 0; + dir_x = 1; + x = eixo_x.read(); + // pc.printf("x < \r\n"); + // pc.printf("dir_x = %B \r\n",dir_x); + if (botao_emergencia == 0 ) + { + flag_emergencia2 = 1; + break; + } + if (dir_x == 1 and posicao_x > 0) + { + posicao_x = posicao_x - move(dir_x, vel, posicao_x,0) ; + } + pc.printf("Posicao Passo X: %d. \r\n",posicao_x); + menu_enter_2 = 1; + } + if ( x > 0.3f and x < 0.73f) + { + para(); + // menu_enter_2 = 1; + } + //-----------------------------------------JOYSTICK Y-------------------------------------------------------/ + if (troca_yz == 0) + { + while (y < 0.3f and flag_emergencia2 == 0) //Y+ + { + enable_y = 0; + dir_y = 0; + y = eixo_y.read(); + if (botao_emergencia == 0) + { + flag_emergencia2 = 1; + break; + } + if (dir_y == 0 and posicao_y <26000) + { + posicao_y = posicao_y + move(dir_y, vel,posicao_y,1) ; + } + pc.printf("Posicao Passo Y: %d. \r\n",posicao_y); + menu_enter_2 = 1; + } + while ( y > 0.7f and flag_emergencia2 == 0)//Y- + { + enable_y = 0; + dir_y = 1; + y = eixo_y.read(); + if (botao_emergencia == 0) + { + flag_emergencia2 = 1; + break; + } + if (dir_y == 1 and posicao_y > 0) + { + posicao_y = posicao_y - move(dir_y, vel, posicao_y,1) ; + } + pc.printf("Posicao Passo Y: %d. \r\n",posicao_y); + menu_enter_2 = 1; + + } + if ( y > 0.3f and y < 0.7f) + { + para_(); + // menu_enter_2 = 1; + } + } + //-----------------------------------------JOYSTICK Y PARA MEXER O Z------------------------------------------------------/ + if ( troca_yz == 1) + { + while (y < 0.3f and flag_emergencia2 == 0) //Z- + { + enable_z = 0; + dir_z = 1; + y = eixo_y.read(); + if (botao_emergencia == 0) + { + flag_emergencia2 = 1; + break; + } + if (dir_z == 1 and posicao_z > 0) + { + posicao_z = posicao_z - move(dir_z, 500,posicao_z,2) ; + } + pc.printf("Posicao Passo Z: %d. \r\n",posicao_z); + menu_enter_2 = 1; + } + while ( y > 0.7f and flag_emergencia2 == 0)//Z+ + { + enable_z = 0; + dir_z = 0; + y = eixo_y.read(); + if (botao_emergencia == 0) + { + flag_emergencia2 = 1; + break; + } + if (dir_z == 0 and posicao_z < 2000) + { + posicao_z = posicao_z + move(dir_z, 500, posicao_z,2) ; + } + pc.printf("Posicao Passo Z: %d. \r\n",posicao_z); + menu_enter_2 = 1; + + } + if ( y > 0.3f and y < 0.7f) + { + para_(); + //menu_enter_2 = 1; + } + }//fim troca_yz + //-----------------------------------------BOTAO ANALOGICO PARA TROCAR O EIXO Z/Y --------------------------------------------/ + + if (botao_analog == 0) + { troca_yz = !troca_yz; //troca Y/Z + + pc.printf("ZY"); + lcd.cls(); + if (troca_yz == 1) + { + lcd.printf(" Eixo Z Selecionado \n"); + } + if (troca_yz == 0) + { + lcd.printf(" Eixo Y Selecionado \n"); + } + wait(0.8); + menu_enter_2 = 1; + } + + //-----------------------------------------GUARDAR PONTOS (BOTAO) --------------------------------------------/ + if ((guardar_pontos == 1 or botaoC == 0) and posicao_x >= 0 and posicao_y >= 0 and posicao_z >= 0 ) + { //-------------------------------------------------X--------------------------------/ + + pc.printf("GUARDAR PONTOS\r\n"); + if ( i_x != 0 ) + { + pontos_x[i_x] = posicao_x; + //pc.printf(" Ponto[%i] Passo: %i \r\n",i_x,pontos_x[i_x]); + i_x++; + } + if ( i_x == 0 ) + { + pontos_x[i_x] = posicao_x; + //pc.printf(" Ponto[%i] Passo: %i \r\n",i_x,pontos_x[i_x]); + i_x++; + } + + /*if (posicao_x != pontos_x[i_x-1]) + { + pontos_x[i_x] = posicao_x; + // pc.printf(" Ponto[%i] Passo: %i \r\n",i_x,pontos_x[i_x]); + i_x++; + }*/ + + //-------------------------------------------------Y--------------------------------/ + + if ( i_y != 0 ) + { + pontos_y[i_y] = posicao_y; + //pc.printf(" Ponto[%i] Passo: %i \r\n",i_y,pontos_y[i_y]); + i_y++; + } + if ( i_y == 0 ) + { + pontos_y[i_y] = posicao_y; + //pc.printf(" Ponto[%i] Passo: %i \r\n",i_y,pontos_y[i_y]); + i_y++; + } + /*if (posicao_y != pontos_y[i_y-1]) + { + pontos_y[i_y] = posicao_y; + //pc.printf(" Ponto[%i] Passo: %i \r\n",i_y,pontos_y[i_y]); + i_y++; + }*/ + // pc.printf(" Pontos X[%i] Y[%i] Passo X: %i Passo Y: %i\r\n",i_x,i_y, pontos_x[i_x -1],pontos_y[i_y -1]); + + //-------------------------------------------------Z--------------------------------/ + + if ( i_z != 0 ) + { + pontos_z[i_z] = posicao_z; + //pc.printf(" Ponto[%i] Passo: %i \r\n",i_z,pontos_y[i_z]); + i_z++; + } + if ( i_z == 0 ) + { + pontos_z[i_z] = posicao_z; + // pc.printf(" Ponto[%i] Passo: %i \r\n",i_z,pontos_z[i_z]); + i_z++; + } + /* if (posicao_z != pontos_z[i_z-1]) + { + pontos_y[i_z] = posicao_z; + //pc.printf(" Ponto[%i] Passo: %i \r\n",i_z,pontos_y[i_z]); + i_z++; + }*/ + pc.printf(" Pontos X[%i]=%i Pontos Y[%i]=%i Pontos Z[%i]=%i \r\n",i_x, pontos_x[i_x -1],i_y, pontos_y[i_y -1],i_z, pontos_z[i_z -1]); + guardar_pontos = 0; + wait(0.5); + } + }//end mover_motores == 1 and menu == 3 + + if (mover_motores == 1 and menu == 2) + { + //-----------------------------------------IR PARA OS PONTOS GUARDADOS (BOTAO) -----------------------------------------/ + + if (colar_pontos == 1 or botaoA == 0) + { + + lcd.cls(); + lcd.printf("Aplicando Cola!\n"); + pc.printf("colar pontos funcao! \r\n"); + aciona_pneu = 0;//liga a pressao da valvula + for(int h = 0; h < (i_z); h++) + { + + //-----------------------------------------Aciona a pneumatica -----------------------------------------/ + if (cola[h - 1] == 1) + { + aciona_pneu2 = 0;//abre valvula + + } + + wait(1); + pc.printf(" Indo para os Pontos \r\n"); + //-----------------------------------------pontos X -----------------------------------------/ + pc.printf(" Pontos X \r\n"); + + int set_point_x = pontos_x[h] - posicao_x; //o quanto de passos que o motor ira dar para chegar ao ponto desejado + //pc.printf("SetPoint:%i pontos_x[h]:%i h:%i \r\n",set_point, pontos_x[h],h); + if (set_point_x != 0) //o ponto atual é menor do que o desejado + { + enable_x = 0; + + } + + if (set_point_x == 0) //o ponto atual é menor do que o desejado + { + enable_x = 1; + enable_y = 1; + enable_z = 1; + } + if (set_point_x > 0) //o ponto atual é menor do que o desejado + { // pc.printf("maior q 0 \r\n"); + // pc.printf(" SetPoint:%i pontos_x[h]:%i h:%i \r\n",set_point, pontos_x[h],h); + dir_x = 0; + posicao_x = posicao_x + movepara(dir_x,vel,set_point_x,0); + } + + if (set_point_x < 0) // o ponto atual esta a frente do desejado + { // pc.printf("menor q 0 \r\n"); + // pc.printf(" SetPoint:%i pontos_x[h]:%i h:%i \r\n",set_point, pontos_x[h],h); + dir_x = 1; + posicao_x = posicao_x - movepara(dir_x,vel,set_point_x,0); + } + //enable_x = 1 ;//desligar o motor na espera + //pc.printf("Posicao Passo: %d. \r\n",posicao_x); + // wait(1); //espera para ir ao proximo ponto + + //-----------------------------------------pontos y -----------------------------------------/ + pc.printf(" Pontos Y \r\n"); + int set_point_y = pontos_y[h] - posicao_y; //o quanto de passos que o motor ira dar para chegar ao ponto desejado + + //pc.printf("SetPoint:%i pontos_x[h]:%i h:%i \r\n",set_point_y, pontos_y[h],h); + if (set_point_y != 0) //o ponto atual é menor do que o desejado + { + enable_x = 1; + enable_y = 0; + enable_z = 1; + } + if (set_point_y == 0) //o ponto atual é menor do que o desejado + { + enable_x = 1; + enable_y = 1; + enable_z = 1; + } + if (set_point_y > 0) //o ponto atual é menor do que o desejado + { //pc.printf("maior q 0 \r\n"); + // pc.printf(" SetPoint:%i pontos_x[h]:%i h:%i \r\n",set_point_y, pontos_y[h],h); + dir_y = 0; + posicao_y = posicao_y + movepara(dir_y,vel,set_point_y,1); + } + + if (set_point_y < 0) // o ponto atual esta a frente do desejado + { // pc.printf("menor q 0 \r\n"); + //pc.printf(" SetPoint:%i pontos_x[h]:%i h:%i \r\n",set_point_y, pontos_y[h],h); + dir_y = 1; + posicao_y = posicao_y - movepara(dir_y,vel,set_point_y,1); + } + //enable_y = 1 ;//desligar o motor na espera + // pc.printf("Posicao Passo X: %d Passo Y: %d . \r\n",posicao_x,posicao_y); + // wait(1); //espera 2 segundos para ir ao proximo ponto + //-----------------------------------------pontos z -----------------------------------------/ + pc.printf(" Pontos Z \r\n"); + + int set_point_z = pontos_z[h] - posicao_z; //o quanto de passos que o motor ira dar para chegar ao ponto desejado + //pc.printf("SetPoint:%i pontos_x[h]:%i h:%i \r\n",set_point_y, pontos_y[h],h); + if (set_point_z != 0) //o ponto atual é menor do que o desejado + { + enable_x = 1; + enable_y = 1; + enable_z = 0; + } + if (set_point_z == 0) //o ponto atual é menor do que o desejado + { + enable_x = 1; + enable_y = 1; + enable_z = 1; + } + if (set_point_z > 0) //o ponto atual é menor do que o desejado + { //pc.printf("maior q 0 \r\n"); + // pc.printf(" SetPoint:%i pontos_z[h]:%i h:%i \r\n",set_point_z, pontos_z[h],h); + dir_z = 0; //vai para baixo + posicao_z = posicao_z + movepara(dir_z,vel,set_point_z,2); + } + + if (set_point_z < 0) // o ponto atual esta a frente do desejado + { // pc.printf("menor q 0 \r\n"); + //pc.printf(" SetPoint:%i pontos_x[h]:%i h:%i \r\n",set_point_y, pontos_y[h],h); + + dir_z = 1; //vai para cima + posicao_z = posicao_z - movepara(dir_z,vel,set_point_z,2); + } + //enable_y = 1 ;//desligar o motor na espera + pc.printf("Posicao[%d] Passo X: %d Passo Y: %d Passo Z: %d. \r\n",h,posicao_x,posicao_y,posicao_z); + colar_pontos = 0; + + // wait(1); //espera 2 segundos para ir ao proximo ponto + + aciona_pneu2 = 1;//fecha valvula + + + }//loop for + enable_x = 1; + enable_y = 1; + enable_z = 1; + aciona_pneu = 1;//desliga a pressao da valvula + pc.printf("Acabou rotina aplicador de cola\n"); + if (botao_emergencia == 1) + { + lcd.cls(); + lcd.printf("Finalizado!\n"); + wait(1); + menu_enter = 3;//volta para o menu + linha = 3; + } + }//if botaoA + + }// end mover_motores == 1 and menu == 2 + + }//if botao emergencia == 1 + if ((botao_emergencia == 0 and flag_emergencia == 0) or flag_emergencia2 == 1) + { + lcd.cls(); + lcd.printf("Botao Emergencia!\n"); + lcd.setCursor(TextLCD::CurOff_BlkOff);//desliga o cursor + refe = 0; + flag_emergencia = 1; + flag_emergencia2 = 0; + linha = 1; + } + }//while 1 +}//main \ No newline at end of file