Projeto Mecatrônico / Mbed 2 deprecated ProjetoMecatronico

Dependencies:   mbed TextLCD2

Revision:
79:b9e2d020240c
Parent:
78:e1dfd20407fc
Child:
80:3a69b08e062f
diff -r e1dfd20407fc -r b9e2d020240c main_PM.cpp
--- a/main_PM.cpp	Fri Jun 05 13:36:38 2020 +0000
+++ b/main_PM.cpp	Sat Jun 06 21:34:03 2020 +0000
@@ -125,7 +125,7 @@
 
 //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
+        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
@@ -155,6 +155,12 @@
 float medida_lado_pega[30];
 float volume_pega[30];
 int tipo_pega[30];
+int nome_programa[30];
+//parametros que são de confirmação
+int confirmacao_vol_solta[30];
+int confirmacao_vol_pega[30];
+int confirmacao_pos_solta[30];
+int confirmacao_pos_pega[30];
 
 //Informações sobre os solta's a serem armazenadas no array do programa que está sendo construido pelo usuário
 float dimensao_solta[30];
@@ -238,6 +244,9 @@
                 funcao_pega1();
                 wait(2);
                 funcao_pega2();
+                if(pos_y_pega[programa] !=0){
+                    lcd.locate(18,1);lcd.printf("OK");    
+                }
                 wait(2);
                 tecla = pega_tecla();
                 if(tecla!='k'){
@@ -251,8 +260,20 @@
             continuar = 1;
             while(continuar){
                 funcao_salvo1();
+                if(confirma_pos_pega !=0){
+                    lcd.locate(18,1);lcd.printf("OK");   
+                }
+                if(confirma_pos_pega !=0){
+                    lcd.locate(18,2);lcd.printf("OK");
+                }
                 wait(2);
                 funcao_salvo2();
+                if(confirma_vol_pega !=0){
+                    lcd.locate(18,1);lcd.printf("OK");   
+                }
+                if(confirma_vol_pega !=0){
+                    lcd.locate(18,2);lcd.printf("OK");
+                }
                 wait(2);
                 tecla = pega_tecla();
                 if(tecla!='k'){
@@ -359,8 +380,20 @@
              status_tela = "salvo_pos_certo_solta";}            
         else if(tecla == 'B' && status_tela=="salvo_confirmacao_solta_agree"){
             funcao_salvo1();
+            if(confirma_pos_pega !=0){
+                lcd.locate(18,1);lcd.printf("OK");   
+            }
+            if(confirma_pos_pega !=0){
+                lcd.locate(18,2);lcd.printf("OK");
+            }
             wait(1);
             funcao_salvo2();
+            if(confirma_vol_pega !=0){
+                lcd.locate(18,1);lcd.printf("OK");   
+            }
+            if(confirma_vol_pega !=0){
+                lcd.locate(18,2);lcd.printf("OK");
+            }
             programa = 1;
             status_tela = "salvo";}     
         else if(tecla =='3' && status_tela =="salvo_confirmacao"){
@@ -381,6 +414,7 @@
                     lcd.locate(0,2);
                     printf("Volume inputado!");
                     continuar = 0;
+                    confirmacao_vol_pega[programa]=1;
                     wait(1);
                 }
             }                                 
@@ -399,8 +433,20 @@
              status_tela="salvo_conf_vol_solta";}
         else if(tecla =='B' && status_tela =="salvo_confirmacao"){ 
             funcao_salvo1();
+            if(confirma_pos_pega !=0){
+                lcd.locate(18,1);lcd.printf("OK");   
+            }
+            if(confirma_pos_pega !=0){
+                lcd.locate(18,2);lcd.printf("OK");
+            }
             wait(1);
             funcao_salvo2();
+            if(confirma_vol_pega !=0){
+                lcd.locate(18,1);lcd.printf("OK");   
+            }
+            if(confirma_vol_pega !=0){
+                lcd.locate(18,2);lcd.printf("OK");
+            }
             programa = 1;
             status_tela = "salvo";}   
         
@@ -408,6 +454,7 @@
         
         //Ações para a tela de salvo_pos_certo_pega
         if(tecla =='1' && status_tela =="salvo_pos_certo_pega"){
+            confirmacao_pos_pega[programa]=1;
             funcao_salvo_agree1();
             lcd.locate(18,1);lcd.printf("OK");
             wait(1);
@@ -449,6 +496,7 @@
                     funcao_salvo_agree2(); 
                     status_tela = "salvo_confirmacao";
                     continuar = 0;
+                    confirmacao_pos_pega[programa]=1;
                 }
             }
         }
@@ -461,6 +509,7 @@
         
         //Ações para a tela salvo_conf_vol_pega
         if(tecla =='A' && status_tela =="salvo_conf_vol_pega"){
+            confirmacao_vol_pega[programa]=1;
             funcao_salvo_agree1();
             wait(1);
             funcao_salvo_agree2();
@@ -475,6 +524,7 @@
         
         //Ações para a tela de salvo_pos_certo_solta
         if(tecla =='1' && status_tela =="salvo_pos_certo_"){
+            confirmacao_vol_solta[programa]=1; //Tag que indica que o usuário confirmou a posição salva
             funcao_salvo_agree1();
             lcd.locate(18,2);lcd.printf("OK");
             wait(1);
@@ -515,6 +565,7 @@
                     wait(1);
                     funcao_salvo_agree2(); 
                     status_tela = "salvo_confirmacao";
+                    confirmacao_pos_solta[programa]=1; //Flag que mostra que o usuário setou a posição conforme ele queria e está confirmado.
                     continuar = 0;
                 }
             }
@@ -527,6 +578,7 @@
         
         //Ações para a tela salvo_conf_vol_solta
         if(tecla =='A' && status_tela =="salvo_conf_vol_solta"){
+            confirmacao_vol_solta[programa]=1;
             funcao_salvo_agree1();
             wait(1);
             funcao_salvo_agree2();
@@ -537,15 +589,15 @@
             funcao_salvo_vol_solta_modifica();
             wait(3);
             funcao_salvo_agree_solta_vol();
-             lcd.locate(3,0);lcd.printf("%f",volume_solta_1[programa]);
-             lcd.locate(8,0);lcd.printf("%f",volume_solta_2[programa]);
-             lcd.locate(13,0);lcd.printf("%f",volume_solta_3[programa]);
-             lcd.locate(3,1);lcd.printf("%f",volume_solta_4[programa]);
-             lcd.locate(8,2);lcd.printf("%f",volume_solta_5[programa]);
-             lcd.locate(13,3);lcd.printf("%f",volume_solta_6[programa]);
-             lcd.locate(3,1);lcd.printf("%f",volume_solta_7[programa]);
-             lcd.locate(8,2);lcd.printf("%f",volume_solta_8[programa]);
-             lcd.locate(13,3);lcd.printf("%f",volume_solta_9[programa]); 
+             lcd.locate(3,0);lcd.printf("%4.1f",volume_solta_1[programa]);
+             lcd.locate(8,0);lcd.printf("%4.1f",volume_solta_2[programa]);
+             lcd.locate(13,0);lcd.printf("%4.1f",volume_solta_3[programa]);
+             lcd.locate(3,1);lcd.printf("%4.1f",volume_solta_4[programa]);
+             lcd.locate(8,2);lcd.printf("%4.1f",volume_solta_5[programa]);
+             lcd.locate(13,3);lcd.printf("%4.1f",volume_solta_6[programa]);
+             lcd.locate(3,1);lcd.printf("%4.1f",volume_solta_7[programa]);
+             lcd.locate(8,2);lcd.printf("%4.1f",volume_solta_8[programa]);
+             lcd.locate(13,3);lcd.printf("%4.1f",volume_solta_9[programa]); 
             if(tecla=='1' && status_tela=="salvo_conf_vol_solta"){
                  continuar = 1;
                  lcd.locate(3,0); 
@@ -697,20 +749,24 @@
                     }
                 }
             }
-            }
+            confirmacao_vol_solta[programa]=1;}
         else if(tecla =='B' && status_tela =="salvo_conf_vol_solta"){             
             funcao_salvo_agree1();
             wait(1);
             funcao_salvo_agree2(); 
             status_tela = "salvo_confirmacao";}          
                       
-        tecla = pega_tecla();    
+        tecla = pega_tecla(); 
         
+        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";   
+        }
         //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());
@@ -735,8 +791,17 @@
                 }
                 else if(tecla=='B'){
                     funcao_pega1();
+                    if(medida_lado_pega !=0){
+                        lcd.locate(18,1);lcd.printf("OK");   
+                    }
+                    if(volume_pega !=0){
+                        lcd.locate(18,2);lcd.printf("OK");
+                    }
                     wait(1);
                     funcao_pega2();
+                    if(pos_y_pega[programa] !=0){
+                        lcd.locate(18,1);lcd.printf("OK");    
+                    }
                     status_tela = "novo";
                     continuar = 0;
                 }
@@ -837,8 +902,17 @@
         }
         else if(tecla == 'B' && status_tela == "forma"){
             funcao_pega1();
+            if(medida_lado_pega !=0){
+                lcd.locate(18,1);lcd.printf("OK");   
+            }
+            if(volume_pega !=0){
+                lcd.locate(18,2);lcd.printf("OK");
+            }
             wait(1);
             funcao_pega2();
+            if(pos_y_pega[programa] !=0){
+                lcd.locate(18,1);lcd.printf("OK");    
+            }
             status_tela = "novo";}
         
         tecla = pega_tecla();
@@ -847,16 +921,16 @@
         if(tecla == 'A' && status_tela == "forma_quad"){
             funcao_pega1();
             medida_lado_pega[programa] = comprimento_quad;
-            if(pos_y_pega !=0){
-            lcd.locate(18,1);lcd.printf("OK");   
+            if(medida_lado_pega !=0){
+                lcd.locate(18,1);lcd.printf("OK");   
             }
-            if(medida_lado_pega !=0){
-            lcd.locate(18,1);lcd.printf("OK");
+            if(volume_pega !=0){
+                lcd.locate(18,2);lcd.printf("OK");
             }
             wait(1);
             funcao_pega2();
-            if(volume_pega !=0){
-            lcd.locate(18,0);lcd.printf("OK");    
+            if(pos_y_pega[programa] !=0){
+                lcd.locate(18,1);lcd.printf("OK");    
             }
             status_tela ="novo";}
         else if(tecla == 'B' && status_tela == "forma_quad"){
@@ -865,11 +939,11 @@
         else if(tecla == 'A' && status_tela == "forma_red"){
             medida_lado_pega[programa] = diametro;
             funcao_pega1();
-            if(pos_y_pega !=0){
-            lcd.locate(18,1);lcd.printf("OK");   
+            if(medida_lado_pega !=0){
+                lcd.locate(18,1);lcd.printf("OK");   
             }
-            if(medida_lado_pega !=0){
-            lcd.locate(18,1);lcd.printf("OK");
+            if(volume_pega !=0){
+                lcd.locate(18,2);lcd.printf("OK");
             }
             wait(1);
             funcao_pega2();
@@ -883,30 +957,56 @@
         else if(tecla == 'A' && status_tela == "volume"){
             funcao_pega1();
             volume_pega[programa] = 12;
-            if(pos_y_pega !=0){
-            lcd.locate(18,1);lcd.printf("OK");   
+            if(medida_lado_pega !=0){
+                lcd.locate(18,1);lcd.printf("OK");   
             }
-            if(medida_lado_pega !=0){
-            lcd.locate(18,1);lcd.printf("OK");
+            if(volume_pega !=0){
+                lcd.locate(18,2);lcd.printf("OK");
             }
             wait(1);
             funcao_pega2();
-            if(volume_pega !=0){
-            lcd.locate(18,0);lcd.printf("OK");    
+            if(pos_y_pega[programa] !=0){
+                lcd.locate(18,1);lcd.printf("OK");    
             }
             status_tela ="novo";}
         else if( tecla == 'B' && status_tela == "volume"){
             funcao_pega_forma();
             status_tela = "forma";}
-        else if(tecla == 'A' && status_tela == "pos_x"){
+        else if(tecla == 'A' && status_tela == "pos_x"){ //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
             funcao_pega_pos_y();  //colocar programacao que contem o posicionamento do eixo y
-            pos_y_pega[programa] = 12.5;
+            continuar = 1;
+            while(continuar){
+                 tecla = pega_tecla();
+                 if(y_menos == 0){mov_y_menos();
+                    lcd.cls();      
+                    lcd.printf("Y: %4.1f", coord_y);}
+                 else if(y_mais == 0){mov_y_mais();
+                    lcd.cls();
+                    lcd.printf("Y: %4.1f", coord_y);}
+                if(tecla=='A'){
+                    continuar = 0;
+                    pos_y_pega[programa] = coord_x;
+                    lcd.locate(0,1);
+                    lcd.printf("Posicao de Y salva!");
+                    printf("Posicao Y: %4.1f", coord_x);
+                    continuar = 0;
+                }
+            }
             status_tela = "pos_y";
             }
-        else if(tecla == 'B' && status_tela == "pos_x"){
+        else if(tecla == 'B' && status_tela == "pos_x"){ ///!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
             funcao_pega1();
+            if(medida_lado_pega !=0){
+                lcd.locate(18,1);lcd.printf("OK");   
+            }
+            if(volume_pega !=0){
+                lcd.locate(18,2);lcd.printf("OK");
+            }
             wait(1);
             funcao_pega2();
+            if(pos_y_pega[programa] !=0){
+                lcd.locate(18,1);lcd.printf("OK");    
+            }
             status_tela = "novo";}
             
         tecla = pega_tecla();
@@ -916,23 +1016,40 @@
         //Ações para a tela pos_y
         if(tecla == 'A' && status_tela == "pos_y"){
             funcao_pega1();
-            if(pos_y_pega !=0){
-            lcd.locate(18,1);lcd.printf("OK");   
+            if(medida_lado_pega !=0){
+                lcd.locate(18,1);lcd.printf("OK");   
             }
-            if(medida_lado_pega !=0){
-            lcd.locate(18,1);lcd.printf("OK");
+            if(volume_pega !=0){
+                lcd.locate(18,2);lcd.printf("OK");
             }
             wait(1);
             funcao_pega2();
-            if(volume_pega !=0){
-            lcd.locate(18,0);lcd.printf("OK");    
+             if(pos_y_pega[programa] !=0){
+                lcd.locate(18,1);lcd.printf("OK");    
             }
             wait(1);
             status_tela ="novo";}
         else if(tecla == 'B' && status_tela == "pos_y"){
-            funcao_pega_forma();
-            status_tela = "forma";}
-            
+        funcao_pega_pos_x();
+            continuar = 1;
+            while(continuar){
+                 tecla = pega_tecla();
+                 if(x_menos == 0){mov_x_menos();
+                    lcd.cls();      
+                    lcd.printf("X: %4.1f", coord_x);}
+                 else if(x_mais == 0){mov_x_mais();
+                    lcd.cls();
+                    lcd.printf("X: %4.1f", coord_x);}
+                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";}
             
         tecla=pega_tecla(); 
          if(pos_x_pega[programa]!=0 && pos_y_pega[programa]!=0 && medida_lado_pega[programa]!=0 && volume_pega[programa] !=0 && tipo_pega[programa]!=0 && status_tela == "novo"){
@@ -1040,16 +1157,16 @@
         }   
         else if(tecla == 'B' && status_tela == "solta"){
             funcao_pega1();
-            if(pos_y_pega !=0){
-            lcd.locate(18,1);lcd.printf("OK");   
+            if(medida_lado_pega !=0){
+                lcd.locate(18,1);lcd.printf("OK");   
             }
-            if(medida_lado_pega !=0){
-            lcd.locate(18,1);lcd.printf("OK");
+            if(volume_pega !=0){
+                lcd.locate(18,2);lcd.printf("OK");
             }
             wait(1);
             funcao_pega2();
-            if(volume_pega !=0){
-            lcd.locate(18,0);lcd.printf("OK");    
+            if(pos_y_pega[programa] !=0){
+                lcd.locate(18,1);lcd.printf("OK");    
             }
             status_tela="novo";
             }
@@ -1250,8 +1367,43 @@
         //Ações para a tela acompanhamento (execução do programa)
         //MAtriz 3x3 (6x6cm)
         if(pos_x_solta[programa]!=0 && pos_y_solta[programa]!=0 && volume_solta_9[programa]!=0 && dimensao_solta[programa]!=0 && status_tela[programa]=='solta'){
-           funcao_acomp();
-           status_tela="acompanhamento"; 
+           funcao_nome_prog()
+           status_tela="nome_programa";}
+            else if(tecla=='B' && status_tela=="nome_programa"){
+                funcao_solta1();
+                if(volume_solta_9[programa] !=0){lcd.locate(18,2);lcd.printf("OK");}
+                if(dimensao_solta[programa] !=0){lcd.locate(18,1);lcd.printf("OK");}
+                funcao_solta2();
+                if(pos_y_solta[programa] !=0){lcd.locate(18,1);lcd.printf("OK");}
+                pos_y_solta[programa] = 10;
+                wait(3);
+                status_tela="solta";
+               } 
+           if(tecla=='A' && status_tela=="nome_programa"){
+                 //!!!!!!!!!!!!!! colocar o códgio de pegar o valor do usuário
+                nome=1;
+                continuar=1;
+                while(continuar){
+                tecla = pega_tecla();
+                wait(1);
+                if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
+                    nome = multiplicador*nome + ((int)tecla - 48);
+                    lcd.printf("%c",tecla);
+                }
+                else if(tecla == 'A'){
+                    printf("nome inserido");
+                    printf("nome: %d", nome);
+                    funcao_acomp();
+                    status_tela="acompanhamento";
+                    continuar = 0;
+                    nome_programa[programa]=nome;
+                    confirmacao_pos_pega[programa]=0;
+                    confirmacao_pos_solta[programa]=0;
+                    confirmacao_vol_pega[programa]=0;
+                    confirmacao_pos_solta[programa]=0;
+                }
+            }
+            
            int cont_pipeta = 0;
            float altura;