2 Motores + Joystick

Dependencies:   X_NUCLEO_IHM01A1 TextLCD

Fork of HelloWorld_IHM01A1_2Motors_mbedOS by ST

Files at this revision

API Documentation at this revision

Comitter:
leogrotti
Date:
Thu May 17 17:18:48 2018 +0000
Parent:
46:63b15a56cbe5
Child:
48:76ccfa408a33
Commit message:
salva ate 10 pontos com lista + tentativa interpola??o

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Wed May 16 22:15:06 2018 +0000
+++ b/main.cpp	Thu May 17 17:18:48 2018 +0000
@@ -203,6 +203,9 @@
      if (passo != 0){
      passo_verdade = passo/1.0892 - 15,56;
      }
+     else {
+         passo_verdade = 0;
+         }
      return (passo_verdade);
      
      }
@@ -216,22 +219,31 @@
     int calcdeltaY = correcao_passo(listapontosY[0] - PYatual);
     int calcdeltaZ = correcao_passo(listapontosZ[0] - PZatual);
      
-    if (calcdeltaX > 0) {
+    if (calcdeltaX > 0 and calcdeltaY > 0 ) {
         motor2->move(StepperMotor::FWD, calcdeltaX);
+        motor1->move(StepperMotor::FWD, calcdeltaY);
         motor2->wait_while_active();
+        motor1->wait_while_active();
         }
-       else {
-            motor2->move(StepperMotor::BWD, -calcdeltaX);
-            motor2->wait_while_active();
-            }
-    if (calcdeltaY > 0) {
-        motor1->move(StepperMotor::FWD, calcdeltaY);
+    if (calcdeltaX > 0 and calcdeltaY < 0 ) {
+        motor2->move(StepperMotor::FWD, calcdeltaX);
+        motor1->move(StepperMotor::BWD, -calcdeltaY);
+        motor2->wait_while_active();
         motor1->wait_while_active();
         }
-        else {
-            motor1->move(StepperMotor::BWD, -calcdeltaY);
-            motor1->wait_while_active();
-            }
+    if (calcdeltaX < 0 and calcdeltaY > 0 ) {
+        motor2->move(StepperMotor::BWD, -calcdeltaX);
+        motor1->move(StepperMotor::FWD, calcdeltaY);
+        motor2->wait_while_active();
+        motor1->wait_while_active();
+        }
+    if (calcdeltaX < 0 and calcdeltaY < 0 ) {
+        motor2->move(StepperMotor::BWD, -calcdeltaX);
+        motor1->move(StepperMotor::BWD, -calcdeltaY);
+        motor2->wait_while_active();
+        motor1->wait_while_active();
+        }
+       
     if (calcdeltaZ > 0) {
         motor3->move(StepperMotor::FWD, calcdeltaZ);
         motor3->wait_while_active();
@@ -418,50 +430,7 @@
                 wait_ms(DELAY_1);
                 
                }
- /*   if (vai_cami){
-                 position1Y = motor1->get_position();
-                 position1X = motor2->get_position();
-                 position1Z = motor3->get_position();
-            
-                 printf( "pos1Y = %i \n\r", position1Y);
-                 printf( "pos1X = %i \n\r", position1X);
-                 printf( "pos1Z = %i \n\r", position1Z);
 
-                 
-        motor2->move(StepperMotor::BWD, 4574);
-        motor2->wait_while_active();
-
-                
-
-                 positionY_agora1 = motor1->get_position();
-                 positionX_agora1= motor2->get_position();
-                 positionZ_agora1 = motor3->get_position();
-                printf( "posY_agora1 = %i \n\r", positionY_agora1);
-                printf( "posX_agora1 = %i \n\r", positionX_agora1);
-                printf( "posZ_agora1 = %i \n\r", positionZ_agora1);
-                a= 1;
-        }
-    if (salva_pos){
-                 position2Y = motor1->get_position();
-                 position2X = motor2->get_position();
-                 position2Z = motor3->get_position();
-            
-                 printf( "pos2Y = %i \n\r", position2Y);
-                 printf( "pos2X = %i \n\r", position2X);
-                 printf( "pos2Z = %i \n\r", position2Z);
-        motor2->move(StepperMotor::FWD, 4574);
-        motor2->wait_while_active();
-                 positionY_agora2 = motor1->get_position();
-                 positionX_agora2= motor2->get_position();
-                 positionZ_agora2 = motor3->get_position();
-                printf( "posY_agora2 = %i \n\r", positionY_agora2);
-                printf( "posX_agora2 = %i \n\r", positionX_agora2);
-                printf( "posZ_agora2 = %i \n\r", positionZ_agora2);
-        
-        a= 0;
-        }
-    
-    */
     
   if (salva_pos) {
             listaX[index] = motor2->get_position();
@@ -477,347 +446,10 @@
            } 
             
             
-            /*if (pos==0) {
-                 position1Y = motor1->get_position();
-                 position1X = motor2->get_position();
-                 position1Z = motor3->get_position();
-            
-                printf( "pos1Y = %i \n\r", position1Y);
-                printf( "pos1X = %i \n\r", position1X);
-                printf( "pos1Z = %i \n\r", position1Z);
-            
-                pos = 1;
-                printf( "pos = %f \n\r", pos);
-                wait_ms(DELAY_2);
-                }
-            }
-    if (salva_pos) {
-            if (pos==1) {
-                 position2Y = motor1->get_position();
-                 position2X = motor2->get_position();
-                 position2Z = motor3->get_position();
-            
-                printf( "pos2Y = %i \n\r", position2Y);
-                printf( "pos2X = %i \n\r", position2X);
-                printf( "pos2Z = %i \n\r", position2Z);
-            
-                pos = 2;
-                printf( "pos = %f \n\r", pos);
-                wait_ms(DELAY_2);
-                }
-            }
-    if (salva_pos) {
-            if (pos==2) {
-                 position3Y = motor1->get_position();
-                 position3X = motor2->get_position();
-                 position3Z = motor3->get_position();
-            
-                printf( "pos3Y = %i \n\r", position3Y);
-                printf( "pos3X = %i \n\r", position3X);
-                printf( "pos3Z = %i \n\r", position3Z);
-            
-                pos = 3;
-                printf( "pos = %f \n\r", pos);
-                wait_ms(DELAY_2);
-                }
-                }*/
     if (vai_cami) {
         vai_caminho_desejado(listaX, listaY, listaZ, index);
         printf("Vai caminho pressionado %d \r\n", index);
         wait_ms(DELAY_2);
-        /*        printf( "pos = %f \n\r", pos);
-        if (pos ==0){
-            printf("sem posicoes salvas");
-            wait_ms(DELAY_2);
-            }
-        if (pos == 1) {
-                        printf( "pos1Y = %i \n\r", position1Y);
-                        printf( "pos1X = %i \n\r", position1X);
-                        printf( "pos1Z = %i \n\r", position1Z);
-                 positionY_agora1 = motor1->get_position();
-                 positionX_agora1= motor2->get_position();
-                 positionZ_agora1 = motor3->get_position();
-                        printf( "posY_agora1 = %i \n\r", positionY_agora1);
-                        printf( "posX_agora1 = %i \n\r", positionX_agora1);
-                        printf( "posZ_agora1 = %i \n\r", positionZ_agora1);
-                 dif_posX1 = position1X - positionX_agora1; 
-                 dif_posY1 = position1Y - positionY_agora1; 
-                 dif_posZ1 = position1Z - positionZ_agora1; 
-                 
-                        printf( "difY1 = %i \n\r", correcao_passo(dif_posY1));
-                        printf( "difX1 = %i \n\r", correcao_passo(dif_posX1));
-                        printf( "difZ1 = %i \n\r", correcao_passo(dif_posZ1));
-        if (correcao_passo(dif_posX1) >0){
-            motor2->move(StepperMotor::FWD, correcao_passo(dif_posX1));
-            motor2->wait_while_active();
-            }
-        if (correcao_passo(dif_posX1) <0){
-           // correcao_passo(dif_posX1) = -correcao_passo(dif_posX1);
-            motor2->move(StepperMotor::BWD, -correcao_passo(dif_posX1));
-            motor2->wait_while_active();
-            }
-        if (correcao_passo(dif_posY1) >0){
-            motor1->move(StepperMotor::FWD, correcao_passo(dif_posY1));
-            motor1->wait_while_active();
-            }
-        if (correcao_passo(dif_posY1) <0){
-            //correcao_passo(dif_posY1) = -correcao_passo(dif_posY1);
-            motor1->move(StepperMotor::BWD, -correcao_passo(dif_posY1));
-            motor1->wait_while_active();
-            }
-        if (correcao_passo(dif_posZ1) >0){
-            motor3->move(StepperMotor::FWD, correcao_passo(dif_posZ1));
-            motor3->wait_while_active();
-            }
-        if (correcao_passo(dif_posZ1) <0){
-            //correcao_passo(dif_posZ1) = -correcao_passo(dif_posZ1);
-            motor3->move(StepperMotor::BWD, -correcao_passo(dif_posZ1));
-            motor3->wait_while_active();
-            }
-                
-                 positionY_agora1 = motor1->get_position();
-                 positionX_agora1= motor2->get_position();
-                 positionZ_agora1 = motor3->get_position();
-                        printf( "posY_agora1 = %i \n\r", positionY_agora1);
-                        printf( "posX_agora1 = %i \n\r", positionX_agora1);
-                        printf( "posZ_agora1 = %i \n\r", positionZ_agora1);
-            }
-        if (pos == 2) {
-                        printf( "pos1Y = %i \n\r", position1Y);
-                        printf( "pos1X = %i \n\r", position1X);
-                        printf( "pos1Z = %i \n\r", position1Z);
-                 positionY_agora1 = motor1->get_position();
-                 positionX_agora1= motor2->get_position();
-                 positionZ_agora1 = motor3->get_position();
-                        printf( "posY_agora1 = %i \n\r", positionY_agora1);
-                        printf( "posX_agora1 = %i \n\r", positionX_agora1);
-                        printf( "posZ_agora1 = %i \n\r", positionZ_agora1);
-                 dif_posX1 = position1X - positionX_agora1; 
-                 dif_posY1 = position1Y - positionY_agora1; 
-                 dif_posZ1 = position1Z - positionZ_agora1; 
-                 
-                        printf( "difY1 = %i \n\r", correcao_passo(dif_posY1));
-                        printf( "difX1 = %i \n\r", correcao_passo(dif_posX1));
-                        printf( "difZ1 = %i \n\r", correcao_passo(dif_posZ1));
-        if (correcao_passo(dif_posX1) >0){
-            motor2->move(StepperMotor::FWD, correcao_passo(dif_posX1));
-            motor2->wait_while_active();
-            }
-        if (correcao_passo(dif_posX1) <0){
-            //correcao_passo(dif_posX1) = -correcao_passo(dif_posX1);
-            motor2->move(StepperMotor::BWD, -correcao_passo(dif_posX1));
-            motor2->wait_while_active();
-            }
-        if (correcao_passo(dif_posY1) >0){
-            motor1->move(StepperMotor::FWD, correcao_passo(dif_posY1));
-            motor1->wait_while_active();
-            }
-        if (correcao_passo(dif_posY1) <0){
-            //correcao_passo(dif_posY1) = -correcao_passo(dif_posY1);
-            motor1->move(StepperMotor::BWD, -correcao_passo(dif_posY1));
-            motor1->wait_while_active();
-            }
-        if (correcao_passo(dif_posZ1) >0){
-            motor3->move(StepperMotor::FWD, correcao_passo(dif_posZ1));
-            motor3->wait_while_active();
-            }
-        if (correcao_passo(dif_posZ1) <0){
-            //correcao_passo(dif_posZ1) = -correcao_passo(dif_posZ1);
-            motor3->move(StepperMotor::BWD, -correcao_passo(dif_posZ1));
-            motor3->wait_while_active();
-            }
-                
-                 positionY_agora2 = motor1->get_position();
-                 positionX_agora2= motor2->get_position();
-                 positionZ_agora2 = motor3->get_position();
-                        printf( "posY_agora2 = %i \n\r", positionY_agora2);
-                        printf( "posX_agora2 = %i \n\r", positionX_agora2);
-                        printf( "posZ_agora2 = %i \n\r", positionZ_agora2);
-                        wait_ms(DELAY_2);    
-                 dif_posX2 = position2X - positionX_agora2; 
-                 dif_posY2 = position2Y - positionY_agora2; 
-                 dif_posZ2 = position2Z - positionZ_agora2;  
-                        printf( "difY2 = %i \n\r", correcao_passo(dif_posY2));
-                        printf( "difX2 = %i \n\r", correcao_passo(dif_posX2));
-                        printf( "difZ2 = %i \n\r", correcao_passo(dif_posZ2));   
-                 
-        if (correcao_passo(dif_posX2) >0){
-            printf( "fwd difX2 = %i \n\r", correcao_passo(dif_posX2));
-            motor2->move(StepperMotor::FWD, correcao_passo(dif_posX2));
-            motor2->wait_while_active();
-            }
-        if (correcao_passo(dif_posX2) <0){
-            //correcao_passo(dif_posX2) = -correcao_passo(dif_posX2);
-                                    printf( "bwd difX2 = %i \n\r", correcao_passo(dif_posX2));
-            motor2->move(StepperMotor::BWD, -correcao_passo(dif_posX2));
-            motor2->wait_while_active();
-            }
-        if (correcao_passo(dif_posY2) >0){
-                                    printf( "fwd difY2 = %i \n\r", correcao_passo(dif_posY2));
-            motor1->move(StepperMotor::FWD, correcao_passo(dif_posY2));
-            motor1->wait_while_active();
-            }
-        if (correcao_passo(dif_posY2) <0){
-            //correcao_passo(dif_posY2) = -correcao_passo(dif_posY2);
-            printf( "bwd difY2 = %i \n\r", correcao_passo(dif_posY2));
-            motor1->move(StepperMotor::BWD, -correcao_passo(dif_posY2));
-            motor1->wait_while_active();
-            }
-        if (correcao_passo(dif_posZ2) >0){
-            printf( "fwd difZ2 = %i \n\r", correcao_passo(dif_posZ2));
-            motor3->move(StepperMotor::FWD, correcao_passo(dif_posZ2));
-            motor3->wait_while_active();
-            }
-        if (correcao_passo(dif_posZ2) <0){
-            //correcao_passo(dif_posZ2) = -correcao_passo(dif_posZ2);
-            printf( "bwd difZ2 = %i \n\r", correcao_passo(dif_posZ2));
-            motor3->move(StepperMotor::BWD, -correcao_passo(dif_posZ2));
-            motor3->wait_while_active();
-            }   
-                 positionY_agora2 = motor1->get_position();
-                 positionX_agora2= motor2->get_position();
-                 positionZ_agora2 = motor3->get_position();
-                        printf( "posY_agora2 = %i \n\r", positionY_agora2);
-                        printf( "posX_agora2 = %i \n\r", positionX_agora2);
-                        printf( "posZ_agora2 = %i \n\r", positionZ_agora2);
-            }
-    
-     if (pos == 3) {
-                        printf( "pos1Y = %i \n\r", position1Y);
-                        printf( "pos1X = %i \n\r", position1X);
-                        printf( "pos1Z = %i \n\r", position1Z);
-                 positionY_agora1 = motor1->get_position();
-                 positionX_agora1= motor2->get_position();
-                 positionZ_agora1 = motor3->get_position();
-                        printf( "posY_agora1 = %i \n\r", positionY_agora1);
-                        printf( "posX_agora1 = %i \n\r", positionX_agora1);
-                        printf( "posZ_agora1 = %i \n\r", positionZ_agora1);
-                 dif_posX1 = position1X - positionX_agora1; 
-                 dif_posY1 = position1Y - positionY_agora1; 
-                 dif_posZ1 = position1Z - positionZ_agora1; 
-                 
-                        printf( "difY1 = %i \n\r", correcao_passo(dif_posY1));
-                        printf( "difX1 = %i \n\r", correcao_passo(dif_posX1));
-                        printf( "difZ1 = %i \n\r", correcao_passo(dif_posZ1));
-        if (correcao_passo(dif_posX1) >0){
-            motor2->move(StepperMotor::FWD, correcao_passo(dif_posX1));
-            motor2->wait_while_active();
-            }
-        if (correcao_passo(dif_posX1) <0){
-            //correcao_passo(dif_posX1) = -correcao_passo(dif_posX1);
-            motor2->move(StepperMotor::BWD, -correcao_passo(dif_posX1));
-            motor2->wait_while_active();
-            }
-        if (correcao_passo(dif_posY1) >0){
-            motor1->move(StepperMotor::FWD, correcao_passo(dif_posY1));
-            motor1->wait_while_active();
-            }
-        if (correcao_passo(dif_posY1) <0){
-            //correcao_passo(dif_posY1) = -correcao_passo(dif_posY1);
-            motor1->move(StepperMotor::BWD, -correcao_passo(dif_posY1));
-            motor1->wait_while_active();
-            }
-        if (correcao_passo(dif_posZ1) >0){
-            motor3->move(StepperMotor::FWD, correcao_passo(dif_posZ1));
-            motor3->wait_while_active();
-            }
-        if (correcao_passo(dif_posZ1) <0){
-            //correcao_passo(dif_posZ1) = -correcao_passo(dif_posZ1);
-            motor3->move(StepperMotor::BWD, -correcao_passo(dif_posZ1));
-            motor3->wait_while_active();
-            }
-                
-                 positionY_agora2 = motor1->get_position();
-                 positionX_agora2= motor2->get_position();
-                 positionZ_agora2 = motor3->get_position();
-                        printf( "posY_agora2 = %i \n\r", positionY_agora2);
-                        printf( "posX_agora2 = %i \n\r", positionX_agora2);
-                        printf( "posZ_agora2 = %i \n\r", positionZ_agora2);
-                        wait_ms(DELAY_2);    
-                 dif_posX2 = position2X - positionX_agora2; 
-                 dif_posY2 = position2Y - positionY_agora2; 
-                 dif_posZ2 = position2Z - positionZ_agora2;     
-                 
-        if (correcao_passo(dif_posX2) >0){
-            motor2->move(StepperMotor::FWD, correcao_passo(dif_posX2));
-            motor2->wait_while_active();
-            }
-        if (correcao_passo(dif_posX2) <0){
-            //correcao_passo(dif_posX2) = -correcao_passo(dif_posX2);
-            motor2->move(StepperMotor::BWD, -correcao_passo(dif_posX2));
-            motor2->wait_while_active();
-            }
-        if (correcao_passo(dif_posY2) >0){
-            motor1->move(StepperMotor::FWD, correcao_passo(dif_posY2));
-            motor1->wait_while_active();
-            }
-        if (correcao_passo(dif_posY2) <0){
-            //correcao_passo(dif_posY2) = -correcao_passo(dif_posY2);
-            motor1->move(StepperMotor::BWD, -correcao_passo(dif_posY2));
-            motor1->wait_while_active();
-            }
-        if (correcao_passo(dif_posZ2) >0){
-            motor3->move(StepperMotor::FWD, correcao_passo(dif_posZ2));
-            motor3->wait_while_active();
-            }
-        if (correcao_passo(dif_posZ2) <0){
-            //correcao_passo(dif_posZ2) = -correcao_passo(dif_posZ2);
-            motor3->move(StepperMotor::BWD, -correcao_passo(dif_posZ2));
-            motor3->wait_while_active();
-            }   
-                 positionY_agora2 = motor1->get_position();
-                 positionX_agora2= motor2->get_position();
-                 positionZ_agora2 = motor3->get_position();
-                        printf( "posY_agora2 = %i \n\r", positionY_agora2);
-                        printf( "posX_agora2 = %i \n\r", positionX_agora2);
-                        printf( "posZ_agora2 = %i \n\r", positionZ_agora2);
-            
-            
-                positionY_agora3 = motor1->get_position();
-                 positionX_agora3= motor2->get_position();
-                 positionZ_agora3 = motor3->get_position();
-                        printf( "posY_agora3 = %i \n\r", positionY_agora3);
-                        printf( "posX_agora3 = %i \n\r", positionX_agora3);
-                        printf( "posZ_agora3 = %i \n\r", positionZ_agora3);
-                        wait_ms(DELAY_2);    
-                 dif_posX3 = position3X - positionX_agora3; 
-                 dif_posY3 = position3Y - positionY_agora3; 
-                 dif_posZ3 = position3Z - positionZ_agora3;     
-                 
-        if (correcao_passo(dif_posX3) >0){
-            motor2->move(StepperMotor::FWD, correcao_passo(dif_posX3));
-            motor2->wait_while_active();
-            }
-        if (correcao_passo(dif_posX3) <0){
-            //correcao_passo(dif_posX3) = -correcao_passo(dif_posX3);
-            motor2->move(StepperMotor::BWD, -correcao_passo(dif_posX3));
-            motor2->wait_while_active();
-            }
-        if (correcao_passo(dif_posY3) >0){
-            motor1->move(StepperMotor::FWD, correcao_passo(dif_posY3));
-            motor1->wait_while_active();
-            }
-        if (correcao_passo(dif_posY3) <0){
-            //correcao_passo(dif_posY3) = -correcao_passo(dif_posY3);
-            motor1->move(StepperMotor::BWD, -correcao_passo(dif_posY3));
-            motor1->wait_while_active();
-            }
-        if (correcao_passo(dif_posZ3) >0){
-            motor3->move(StepperMotor::FWD, correcao_passo(dif_posZ3));
-            motor3->wait_while_active();
-            }
-        if (correcao_passo(dif_posZ3) <0){
-            //correcao_passo(dif_posZ3) = -correcao_passo(dif_posZ3);
-            motor3->move(StepperMotor::BWD, -correcao_passo(dif_posZ3));
-            motor3->wait_while_active();
-            }   
-                 positionY_agora3 = motor1->get_position();
-                 positionX_agora3= motor2->get_position();
-                 positionZ_agora3 = motor3->get_position();
-                        printf( "posY_agora3 = %i \n\r", positionY_agora3);
-                        printf( "posX_agora3 = %i \n\r", positionX_agora3);
-                        printf( "posZ_agora3 = %i \n\r", positionZ_agora3);
-            }*/
         }
         }