Projeto Mecatrônico
/
ProjetoMecatronico
testando
Diff: main_PM.cpp
- Revision:
- 70:85daa4aee916
- Parent:
- 69:8c7e1da9d315
- Child:
- 71:c91c96bbed54
--- a/main_PM.cpp Wed Jun 03 11:54:19 2020 +0000 +++ b/main_PM.cpp Wed Jun 03 12:59:00 2020 +0000 @@ -104,7 +104,6 @@ wait(5);} //Funcao de zeramento - void zeramento(){ while (fdc_x != 0){for(int i = 0; i < 4; i++){eixox = hor[i];wait(t_motor);est_x = 1;}} while (fdc_y != 0){for(int i = 0; i < 4; i++){eixoy = hor[i];wait(t_motor);est_y = 1;}} @@ -115,14 +114,15 @@ string status_tela = "zeramento"; int programa = 0; +//Informações sobre o pega float pos_x_pega[30]; float pos_y_pega [30]; float medida_lado_pega[30]; float volume_pega[30]; int tipo_pega[30]; +//Informações sobre os solta's float dimensao_solta[30]; - float volume_solta_1[30]; float volume_solta_2[30]; float volume_solta_3[30]; @@ -132,14 +132,10 @@ float volume_solta_7[30]; float volume_solta_8[30]; float volume_solta_9[30]; - float pos_x_solta[30]; float pos_y_solta[30]; - - //main - int main() { pos_x_solta[1] = 5; pos_y_solta[1] = 5; @@ -153,7 +149,11 @@ int comprimento_quad; bool continuar; int multiplicador = 10; + + //Pinos para ligar o display à NUCLEO TextLCD lcd(D4, D5, D6, D7, D8, D9); + + //Tela inicial lcd.printf("Bem-vindo ao Pipemax"); lcd.locate(0,1); lcd.printf("o seu sistema"); @@ -169,15 +169,22 @@ lcd.locate(0,2); lcd.printf("sistema"); lcd.locate(0,3); - lcd.printf("A - proximo"); + lcd.printf("A - proximo"); + + //Loop principal while(1) { - tecla = pega_tecla(); + tecla = pega_tecla();//Variável que guarda o valor da tecla apertada + + //Teste para analisar se os valores estão corretos através do monitor serial printf("\n%s",status_tela); printf("\n%c",tecla); + + //O zeramento só é feito se confirmado apertando a tecla 'A' if(tecla == 'A' && status_tela == "zeramento"){ zeramento(); status_tela = "inicio"; - funcao_inicio();} + funcao_inicio(); + } // if (x_mais == 0 && est_x == 1){for(int i = 0; i < 4; i++){eixox = parado[i];wait(t_motor);coord_x += 0;lcd.cls();lcd.printf("Limite de x atingido");}} // if (y_mais == 0 && est_y == 1){for(int i = 0; i < 4; i++){eixoy = parado[i];wait(t_motor);coord_y += 0;lcd.cls();lcd.printf("Limite de y atingido");}} @@ -191,7 +198,7 @@ while(y_menos == 0){mov_y_menos(); lcd.cls(); lcd.printf("X: %4.1f", coord_x); lcd.locate(0,1);lcd.printf("Y: %4.1f", coord_y); - lcd.locate(0,2);lcd.printf("Z: %4.1f", coord_z);} + lcd.locate(0,2);lcd.printf("Z: %4.1f", coord_z);} while(z_menos == 0){mov_z_menos(); lcd.cls(); lcd.printf("X: %4.1f", coord_x); @@ -213,29 +220,48 @@ lcd.locate(0,1);lcd.printf("Y: %4.1f", coord_y); lcd.locate(0,2);lcd.printf("Z: %4.1f", coord_z);} + //Caso nenhum botão esteja apertado, os motores devem permanecer parados 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(); + tecla = pega_tecla();//Atualiza a variável tecla + + //Ações para a tela inicial if(tecla =='1' && status_tela == "inicio"){ - funcao_pega1(); - wait(1); - funcao_pega2(); - status_tela = "novo";} + + continuar = 1; //Condição de funcionamento do loop abaixo + while(continuar){ //Esse loop indica que há a alternação de duas telas + funcao_pega1(); + wait(2); + funcao_pega2(); + if(tecla!='k'){ + continuar = 0; + } + } + status_tela = "novo"; + } else if(tecla == '2' && status_tela == "inicio"){ - funcao_salvo1(); - wait(1); - funcao_salvo2(); + continuar = 1; + while(continuar){ + funcao_salvo1(); + wait(2); + funcao_salvo2(); + if(tecla!='k'){ + continuar = 0; + } + } status_tela = "salvo";} - + + //Ações para a tela de salvamento + //A variável programa remete a que programa salvo o usuário deseja acessar tecla = pega_tecla(); if(tecla =='1' && status_tela =="salvo"){ funcao_salvo_agree1(); wait(1); funcao_salvo_agree2(); - programa = 1; + programa = 1; status_tela = "salvo_confirmacao";} else if(tecla =='2' && status_tela =="salvo"){ funcao_salvo_agree1(); @@ -271,12 +297,16 @@ funcao_inicio(); status_tela = "inicio";} - tecla = pega_tecla(); + tecla = pega_tecla();//Atualiza a variável tecla + + //Ações para a tela de salvo_confirmação if(tecla =='1' && status_tela =="salvo_confirmacao"){ funcao_salvo_agree_pos_aviso(); //Tela de aviso ao usuário que a pega se deslocará na posição aduequada wait(3); status_tela = "salvo_confirmacao_pega_agree"; } + + //Ações para a tela salvo_confirmação_pega_agree if(tecla == 'A' && status_tela =="salvo_confirmacao_pega_agree"){ while(coord_x < pos_x_pega[programa]){ //posicionar no local da pega salvo; - se for menor o valor da referencia, gira no sentido horário para aumentar mov_x_mais(); @@ -303,6 +333,8 @@ wait(3); status_tela = "salvo_confirmacao_solta_agree"; } + + //Ações para a tela confirmação_solta_agree if(tecla == 'A' && status_tela =="salvo_confirmacao_solta_agree"){ while(coord_x < pos_x_solta[programa]){ //posicionar no local da pega salvo; - se for menor o valor da referencia, gira no sentido horário para aumentar mov_x_mais(); @@ -334,7 +366,7 @@ tecla = pega_tecla(); wait(1); if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){ - volume = multiplicador*volume + ((int)tecla-48); + volume = multiplicador*volume + ((int)tecla-48); // lcd.printf("%c", tecla); } else if(tecla == 'A'){ @@ -344,7 +376,7 @@ continuar = 0; wait(1); } - } + } status_tela="salvo_conf_vol_pega";} else if(tecla =='4' && status_tela =="salvo_confirmacao"){ funcao_salvo_agree_solta_vol(); //volumes configurados por cada pipeta. (programa.vol_solta_pipeta) @@ -364,8 +396,10 @@ funcao_salvo2(); programa = 1; status_tela = "salvo";} - - tecla = pega_tecla(); + + tecla = pega_tecla(); //Atualiza a variável tecla + + //Ações para a tela de salvo_pos_certo_pega if(tecla =='1' && status_tela =="salvo_pos_certo_pega"){ funcao_salvo_agree1(); lcd.locate(18,1);lcd.printf("OK"); @@ -395,17 +429,19 @@ lcd.cls(); lcd.printf("Y: %4.1f", coord_y);} //Printa para o usuário isso if(tecla=='A'){ - continuar = 0; pos_x_pega[programa] = coord_x; pos_y_pega[programa] = coord_y; lcd.cls(); lcd.printf("Posicao de x e y salva!"); - printf("Posicao X: %4.1f", coord_x); - printf("Posicao Y: %4.1f", coord_y); + lcd.locate(0,1); + lcd.printf("Posicao X: %4.1f", coord_x); + lcd.locate(0,2); + lcd.printf("Posicao Y: %4.1f", coord_y); funcao_salvo_agree1(); wait(1); funcao_salvo_agree2(); status_tela = "salvo_confirmacao"; + continuar = 0; } } } @@ -414,7 +450,9 @@ wait(1); funcao_salvo_agree2(); status_tela = "salvo_confirmacao";} - + + + //Ações para a tela salvo_conf_vol_pega if(tecla =='A' && status_tela =="salvo_conf_vol_pega"){ funcao_salvo_agree1(); wait(1); @@ -427,7 +465,8 @@ wait(1); funcao_salvo_agree2(); status_tela = "salvo_confirmacao";} - + + //Ações para a tela de salvo_pos_certo_solta if(tecla =='1' && status_tela =="salvo_pos_certo_solta"){ funcao_salvo_agree1(); lcd.locate(18,2);lcd.printf("OK"); @@ -457,17 +496,19 @@ lcd.cls(); lcd.printf("Y: %4.1f", coord_y);} //Printa para o usuário isso if(tecla=='A'){ - continuar = 0; pos_x_solta[programa] = coord_x; pos_y_solta[programa] = coord_y; lcd.cls(); lcd.printf("Posicao de x e y salva!"); - printf("Posicao X: %4.1f", coord_x); - printf("Posicao Y: %4.1f", coord_y); + lcd.locate(0,1); + lcd.printf("Posicao X: %4.1f", coord_x); + lcd.locate(0,2); + lcd.printf("Posicao Y: %4.1f", coord_y); funcao_salvo_agree1(); wait(1); funcao_salvo_agree2(); status_tela = "salvo_confirmacao"; + continuar = 0; } } } @@ -476,7 +517,8 @@ wait(1); funcao_salvo_agree2(); status_tela = "salvo_confirmacao";} - + + //Ações para a tela salvo_conf_vol_solta if(tecla =='A' && status_tela =="salvo_conf_vol_solta"){ funcao_salvo_agree1(); wait(1); @@ -499,14 +541,13 @@ lcd.locate(13,3);lcd.printf("%f",volume_solta_9[programa]); if(tecla=='1' && status_tela=="salvo_conf_vol_solta"){ continuar = 1; - multiplicador = 10; lcd.locate(3,0); while(continuar){ // Pega o valor imputado pelo usuário printf("\n%c",pega_tecla()); tecla = pega_tecla(); wait(1); if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){ - volume = multiplicador*volume + ((int)tecla-48); + volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro lcd.printf("%c", tecla); } else if(tecla == 'A'){ @@ -514,7 +555,7 @@ } } } - if(tecla=='2' && status_tela=="salvo_conf_vol_solta"){ + else if(tecla=='2' && status_tela=="salvo_conf_vol_solta"){ continuar = 1; multiplicador = 10; lcd.locate(8,0); @@ -531,7 +572,7 @@ } } } - if(tecla=='3' && status_tela=="salvo_conf_vol_solta"){ + else if(tecla=='3' && status_tela=="salvo_conf_vol_solta"){ continuar = 1; multiplicador = 10; lcd.locate(13,0); @@ -548,7 +589,7 @@ } } } - if(tecla=='4' && status_tela=="salvo_conf_vol_solta"){ + else if(tecla=='4' && status_tela=="salvo_conf_vol_solta"){ continuar = 1; multiplicador = 10; lcd.locate(3,1); @@ -565,7 +606,7 @@ } } } - if(tecla=='5' && status_tela=="salvo_conf_vol_solta"){ + else if(tecla=='5' && status_tela=="salvo_conf_vol_solta"){ continuar = 1; multiplicador = 10; lcd.locate(8,1); @@ -582,7 +623,7 @@ } } } - if(tecla=='6' && status_tela=="salvo_conf_vol_solta"){ + else if(tecla=='6' && status_tela=="salvo_conf_vol_solta"){ continuar = 1; multiplicador = 10; lcd.locate(13,1); @@ -598,7 +639,7 @@ } } } - if(tecla=='7' && status_tela=="salvo_conf_vol_solta"){ + else if(tecla=='7' && status_tela=="salvo_conf_vol_solta"){ continuar = 1; multiplicador = 10; lcd.locate(3,2); @@ -615,7 +656,7 @@ } } } - if(tecla=='8' && status_tela=="salvo_conf_vol_solta"){ + else if(tecla=='8' && status_tela=="salvo_conf_vol_solta"){ continuar = 1; multiplicador = 10; lcd.locate(8,2); @@ -632,7 +673,7 @@ } } } - if(tecla=='9' && status_tela=="salvo_conf_vol_solta"){ + else if(tecla=='9' && status_tela=="salvo_conf_vol_solta"){ continuar = 1; multiplicador = 10; lcd.locate(13,2); @@ -656,17 +697,18 @@ status_tela = "salvo_confirmacao";} tecla = pega_tecla(); + + //Ações para a tela novo if(tecla =='1' && status_tela =="novo"){ funcao_pega_forma(); status_tela ="forma";} - + else if(tecla =='2' && status_tela == "novo"){ volume = 0; printf("\n%c",pega_tecla()); funcao_pega_volume(); // Função que permite a entreda do valor de volume pelo usuário status_tela = "volume"; continuar = 1; - multiplicador = 10; lcd.locate(6,1); while(continuar){ printf("\n%c",pega_tecla()); @@ -677,7 +719,7 @@ lcd.printf("%c", tecla); } else if(tecla == 'A'){ - volume_pega[programa]=volume; + volume_pega[programa] = volume; lcd.locate(0,2); printf("Volume inputado!"); continuar = 0; @@ -706,8 +748,10 @@ if(tecla=='A'){ continuar = 0; pos_x_pega[programa] = coord_x; + lcd.locate(0,1); lcd.printf("Posicao de x salva!"); printf("Posicao X: %4.1f", coord_x); + continuar = 0; } } status_tela = "pos_x";} @@ -726,6 +770,8 @@ wait(0.5); tecla = pega_tecla(); + + //Ações para a tela forma (para definir o formato do recipiente de pega) if(tecla == '1' && status_tela == "forma"){ funcao_pega_forma_quad(); tipo_pega[programa] =1; @@ -788,6 +834,8 @@ status_tela = "novo";} tecla = pega_tecla(); + + //Ações para a tela forma_quad, para detalhes sobre o formato quadrado if(tecla == 'A' && status_tela == "forma_quad"){ funcao_pega1(); medida_lado_pega[programa] = comprimento_quad; @@ -856,6 +904,8 @@ tecla = pega_tecla(); wait(0.5); //passando direto + + //Ações para a tela pos_y if(tecla == 'A' && status_tela == "pos_y"){ funcao_pega1(); if(pos_y_pega !=0){ @@ -885,6 +935,8 @@ status_tela="solta";} tecla=pega_tecla(); + + //Ações para a tela "solta", para definir informações sobre os solta's if(tecla == '1' && status_tela == "solta"){ funcao_solta_dimensao(); continuar = 1; @@ -995,6 +1047,7 @@ } tecla=pega_tecla(); + //Ações para a tela solta_dimensao, para definir informações sobre a dimensão do solta if(tecla=='A' && status_tela=="solta_dimensao"){ dimensao_solta[programa] = 10; funcao_solta1();