2 Motores + Joystick
Dependencies: X_NUCLEO_IHM01A1 TextLCD
Fork of HelloWorld_IHM01A1_2Motors_mbedOS by
Revision 59:8d34a4bfc2b7, committed 2018-05-23
- 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);
