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:
digo1234
Date:
Wed May 23 19:53:32 2018 +0000
Parent:
58:c600f21ab6f9
Child:
60:9f4d34edef70
Commit message:
IHM+Bot?o emergencia + solenoide sem escolha;

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Wed May 23 17:20:50 2018 +0000
+++ b/main.cpp	Wed May 23 19:53:32 2018 +0000
@@ -81,6 +81,7 @@
 DigitalIn fim_curso_Y (PC_11);
 DigitalIn fim_curso_Z (PC_8);
 
+DigitalOut solenoide (PB_15);
 
 Serial pc(USBTX, USBRX);
 
@@ -137,9 +138,9 @@
 int dif_posY3;
 int dif_posZ3;
 
-int listaX[10];
-int listaY[10];
-int listaZ[10];
+int listaX[20];
+int listaY[20];
+int listaZ[20];
 
 int index = 0;
 
@@ -192,7 +193,7 @@
         wait_ms(DELAY_2);
     }
 // função percorre caminho
- void vai_caminho_desejado (int listapontosX[10], int listapontosY[10], int listapontosZ[10], int index_local) {
+ void vai_caminho_desejado (int listapontosX[20], int listapontosY[20], int listapontosZ[20], int index_local) {
     int PYatual = motor1->get_position();
     int PXatual = motor2->get_position();
     int PZatual = motor3->get_position();
@@ -201,6 +202,15 @@
     int calcdeltaY = correcao_passo(listapontosY[0] - PYatual);
     int calcdeltaZ = correcao_passo(listapontosZ[0] - PZatual);
      
+    if (calcdeltaZ > 0) {
+        motor3->move(StepperMotor::FWD, calcdeltaZ);
+        motor3->wait_while_active();
+        }
+        else {
+            motor3->move(StepperMotor::BWD, -calcdeltaZ);
+            motor3->wait_while_active();
+            }
+            
     if (calcdeltaX >= 0 and calcdeltaY >= 0 ) {
         motor2->move(StepperMotor::FWD, calcdeltaX);
         motor1->move(StepperMotor::FWD, calcdeltaY);
@@ -226,17 +236,16 @@
         motor1->wait_while_active();
         }
        
-    if (calcdeltaZ > 0) {
-        motor3->move(StepperMotor::FWD, calcdeltaZ);
-        motor3->wait_while_active();
-        }
-        else {
-            motor3->move(StepperMotor::BWD, -calcdeltaZ);
-            motor3->wait_while_active();
-            }
+    
             
     printf("O for vai rodar: %d \r\n", index_local-1);
     for (int i = 1; i< index_local ; i++) {
+        if (i<index_local-1){
+            solenoide.write(1);
+            }
+        else {
+            solenoide.write(0);
+            }
         printf("X deveria estar : %d \r\n", listapontosX[i-1] );
         printf("Y deveria estar: %d \r\n", listapontosY[i-1]);
         printf("Z deveria estar: %d \r\n", listapontosZ[i-1]);
@@ -253,6 +262,15 @@
         printf("Y vai andar: %d \r\n", calcdeltaY);
         printf("Z vai andar: %d \r\n", calcdeltaZ);
         
+        if (calcdeltaZ > 0) {
+        motor3->move(StepperMotor::FWD, calcdeltaZ);
+        motor3->wait_while_active();
+        }
+            else {
+            motor3->move(StepperMotor::BWD, -calcdeltaZ);
+            motor3->wait_while_active();
+            }
+            
         if (calcdeltaX >= 0 and calcdeltaY >= 0) {
         motor2->move(StepperMotor::FWD, calcdeltaX);
         motor1->move(StepperMotor::FWD, calcdeltaY);
@@ -277,15 +295,6 @@
         motor2->wait_while_active();
         motor1->wait_while_active();
         }
-          
-        if (calcdeltaZ > 0) {
-        motor3->move(StepperMotor::FWD, calcdeltaZ);
-        motor3->wait_while_active();
-        }
-            else {
-            motor3->move(StepperMotor::BWD, -calcdeltaZ);
-            motor3->wait_while_active();
-            }
         }
     }
         
@@ -326,6 +335,7 @@
         if (!botao1 && !botao2 && !botao3 && !botao4 && !emergencia){
             safe = 0;
             }
+        solenoide.write(0);
         count = count +1;
         // Leitura analógica
         u = eixo_X.read();
@@ -481,7 +491,7 @@
 // vai caminho de um programa ja salvo depois do menu inicial     
     if (botao2 && menu==0 && safe == 0) {
         lcd.cls();
-        if (listaX[0]==0&& listaY[0]==0 && listaZ[0]==0){
+        if (listaX[1]==0&& listaY[1]==0 && listaZ[1]==0){
             lcd.setAddress(0,1);
             lcd.printf("NAO HA PONTOS SALVOS");
             wait(2);