Projeto Mecatrônico
/
ProjetoMecatronico
testando
Diff: main_PM.cpp
- Revision:
- 107:345b1ef490a8
- Parent:
- 106:a35a10e8cf0d
- Child:
- 108:4fe1ba9f55c3
--- a/main_PM.cpp Mon Jun 22 21:41:17 2020 +0000 +++ b/main_PM.cpp Mon Jun 22 22:57:11 2020 +0000 @@ -21,7 +21,7 @@ int est_x = 0; //variável que indicará o estado do eixo x, pemitindo ou não que ele possa ser avançado depois de atingir o fim de curso int est_y = 0; //variável que indicará o estado do eixo y, pemitindo ou não que ele possa ser avançado depois de atingir o fim de curso int est_z = 0; //variável que indicará o estado do eixo z, pemitindo ou não que ele possa ser avançado depois de atingir o fim de curso -float altura_solta = 50; +float altura_solta = 5; string est_ihm = "novo"; int cont_pipeta; //variavel que guarda valores de pipetagens feitas @@ -161,9 +161,7 @@ } //Funcao da rotina de execucao void rotina_pino(float volume_solta, int tipo_do_pega, float medida_do_pega, float volume_do_pega, float pos_pino_x, float pos_pino_y, float pos_pega_x, float pos_pega_y){ - printf("%f",volume_solta); for(int i = 0; i < volume_solta; i++){ // - printf("entrou no for"); float altura = calcula_altura(tipo_do_pega,medida_do_pega, volume_do_pega); go_to_posicao(pos_pega_x, pos_pega_y); //vai para a posicao pega wait(0.5); @@ -240,18 +238,6 @@ } }; } -//Funcao que será chamada na interrupcao da queda do botao de emergencia -void emergencia(){TextLCD lcd(D4, D5, D6, D7, D8, D9); - rele2 = 0; //desligamento eletrico dos motores - eixox = 0b0000; //desligamento do motor do eixo x a partir do zeramento do estado de todas as suas bobinas - eixoy = 0b0000; //desligamento do motor do eixo x a partir do zeramento do estado de todas as suas bobinas - eixoz = 0b0000; //desligamento do motor do eixo x a partir do zeramento do estado de todas as suas bobinas - lcd.cls();lcd.printf("EMERGENCIA ACIONADA"); //aviso da situacao de emergencia da maquina - lcd.locate(0,1);lcd.printf("Desarme o botao"); - lcd.locate(0,2);lcd.printf("e pressione B para"); - lcd.locate(0,3);lcd.printf("prosseguir"); - wait(1); -} //Funcao de zeramento, chamada assim que a maquina liga e impede que o codigo entre no while(1) enquanto nao for 100% executada. //Ela aciona os motores ate que o fim de curso seja atingido e pressionado, além de zerar todas as coordenadas dos eixos quando os fins de curso são acionados. @@ -268,6 +254,46 @@ //y, vou para a tela z" int programa = 0; //A variável programa remete a que programa salvo o usuário deseja acessar +//Funcao que será chamada na interrupcao da queda do botao de emergencia +void emergencia(){TextLCD lcd(D4, D5, D6, D7, D8, D9); + rele2 = 0; //desligamento eletrico dos motores + eixox = 0b0000; //desligamento do motor do eixo x a partir do zeramento do estado de todas as suas bobinas + eixoy = 0b0000; //desligamento do motor do eixo y a partir do zeramento do estado de todas as suas bobinas + eixoz = 0b0000; //desligamento do motor do eixo z a partir do zeramento do estado de todas as suas bobinas + + lcd.cls();lcd.printf("EMERGENCIA ACIONADA"); //aviso da situacao de emergencia da maquina + lcd.locate(0,1);lcd.printf("Desarme o botao"); + lcd.locate(0,2);lcd.printf("e pressione B para"); + lcd.locate(0,3);lcd.printf("prosseguir"); + + bool continuar_emergencia = 1; + while(continuar_emergencia){ + tecla = pega_tecla(); + if(tecla == 'B'){ + continuar_emergencia = 0; + } + } + lcd.cls(); + lcd.printf("Por favor, aceite"); + lcd.locate(0,1); + lcd.printf("o zeramento do seu"); + lcd.locate(0,2); + lcd.printf("sistema"); + lcd.locate(0,3); + lcd.printf("A - proximo"); + continuar_emergencia = 1; + + while(continuar_emergencia){ + tecla = pega_tecla(); + if(tecla == 'A'){ + zeramento(); + status_tela = "inicio"; + funcao_inicio(); + continuar_emergencia = 0; + }} + wait(1); +} + //Informações sobre o pega a serem armazenadas no array do programa que está sendo construido pelo usuário //O comprimento de cada array é de 6 pois podem ser "salvos" apenas 6 programas float pos_x_pega[6]; @@ -375,13 +401,6 @@ status_tela = "inicio"; funcao_inicio(); } - - //Caso nenhum botão esteja apertado, os motores devem permanecer com as bobinas desligadas - if(x_mais && x_menos && y_mais && y_menos && z_mais && z_menos != 0){ - for(int i = 0; i < 4; i++){eixox = parado[i];} - for(int i = 0; i < 4; i++){eixoy = parado[i];} - for(int i = 0; i < 4; i++){eixoz = parado[i];} - } tecla = pega_tecla();//Atualiza a variável tecla @@ -586,7 +605,7 @@ else if(tecla =='2' && status_tela =="salvo_pos_certo_pega"){ //Caso o usuário queria ajustar o posicionamento lcd.cls(); funcao_pega_pos_x(); - lcd.printf("Ponha a pega em x/y"); + lcd.printf("Ponha a pega em x/y "); lcd.locate(0,3); lcd.printf(" B-Voltar "); continuar = 1; //Inicia o loop de posicionamento @@ -640,7 +659,7 @@ } //Ações para a tela de salvo_pos_certo_solta - if(tecla =='1' && status_tela =="salvo_pos_certo_"){ + if(tecla =='1' && status_tela =="salvo_pos_certo_solta"){ confirmacao_pos_solta[programa] = 1; //Tag que indica que o usuário confirmou a posição salva status_tela = "salvo_confirmacao"; continuar = 1; @@ -649,7 +668,7 @@ else if(tecla =='2' && status_tela =="salvo_pos_certo_solta"){ lcd.cls(); funcao_solta_pos_x(); - lcd.printf("Ponha a pega em x/y"); + lcd.printf("Ponha a pega em x/y "); lcd.locate(0,3); lcd.printf(" B-Voltar "); continuar = 1; //Inicia o loop de posicionamento @@ -949,7 +968,11 @@ if(confirmacao_vol_solta[programa]==1 && confirmacao_vol_pega[programa]==1 && confirmacao_pos_pega[programa]==1 && confirmacao_pos_solta[programa]==1){ funcao_acomp(); status_tela="acompanhamento"; - est_ihm = "exec";} + est_ihm = "exec"; + confirmacao_pos_pega[programa]=0; + confirmacao_pos_solta[programa]=0; + confirmacao_vol_pega[programa]=0; + confirmacao_pos_solta[programa]=0;} } //fim if(est_ihm) if(est_ihm == "pega"){ @@ -1318,11 +1341,7 @@ status_tela="solta"; troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3); } - tecla = pega_tecla(); - if(tecla=='1' && status_tela=="solta_vol"){ - funcao_solta_vol_igual(); - status_tela="solta_vol_igual"; - } + else if(tecla=='2' && status_tela=="solta_vol"){ funcao_solta_vol_cada(); lcd.locate(11,0);lcd.printf("%g",volume_solta_1[programa]); @@ -1707,14 +1726,14 @@ //Aqui definimos a posição de cada solta a partir de um pinos. float pos1[2] = {pos_x_solta[programa], pos_y_solta[programa]} ; //Pino referência - float pos2[2] = {pos_x_solta[programa]+2*medida_lado_pega[programa], pos_y_solta[programa]} ; - float pos3[2] = {pos_x_solta[programa]+4*medida_lado_pega[programa], pos_y_solta[programa]} ; - float pos4[2] = {pos_x_solta[programa], pos_y_solta[programa]+2*medida_lado_pega[programa]} ; - float pos5[2] = {pos_x_solta[programa]+2*medida_lado_pega[programa], pos_y_solta[programa]+2*medida_lado_pega[programa]} ; - float pos6[2] = {pos_x_solta[programa]+4*medida_lado_pega[programa], pos_y_solta[programa]+2*medida_lado_pega[programa]} ; - float pos7[2] = {pos_x_solta[programa], pos_y_solta[programa]+4*medida_lado_pega[programa]} ; - float pos8[2] = {pos_x_solta[programa]+2*medida_lado_pega[programa], pos_y_solta[programa]+4*medida_lado_pega[programa]} ; - float pos9[2] = {pos_x_solta[programa]+4*medida_lado_pega[programa], pos_y_solta[programa]+4*medida_lado_pega[programa]}; + float pos2[2] = {pos_x_solta[programa]+2*dimensao_solta[programa], pos_y_solta[programa]} ; + float pos3[2] = {pos_x_solta[programa]+4*dimensao_solta[programa], pos_y_solta[programa]} ; + float pos4[2] = {pos_x_solta[programa], pos_y_solta[programa]+2*dimensao_solta[programa]} ; + float pos5[2] = {pos_x_solta[programa]+2*dimensao_solta[programa], pos_y_solta[programa]+2*dimensao_solta[programa]} ; + float pos6[2] = {pos_x_solta[programa]+4*dimensao_solta[programa], pos_y_solta[programa]+2*dimensao_solta[programa]} ; + float pos7[2] = {pos_x_solta[programa], pos_y_solta[programa]+4*dimensao_solta[programa]} ; + float pos8[2] = {pos_x_solta[programa]+2*dimensao_solta[programa], pos_y_solta[programa]+4*dimensao_solta[programa]} ; + float pos9[2] = {pos_x_solta[programa]+4*dimensao_solta[programa], pos_y_solta[programa]+4*dimensao_solta[programa]}; go_to_z(normal_z); //Execução da rotina em cada pino rotina_pino(volume_solta_1[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], pos1[0],pos1[1], pos_x_pega[programa],pos_y_solta[programa]);