C/Visual C - Movimiento simple de Hexápodo

 
Vista:
sin imagen de perfil
Val: 3
Ha disminuido su posición en 4 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Movimiento simple de Hexápodo

Publicado por Jose_Romero (3 intervenciones) el 05/10/2018 20:43:05
Hola, estoy haciendo un hexápodo con 18 servos y 6 patas (3 servos para cada pierna). Estoy utilizando una placa STM32 nucleo y usando el entorno Mbed con lenguaje C.

Mi pregunta es: ¿cómo podría considerar inicialmente los movimientos de un hexápodo?

Inicialmente he declarado todos los pines necesarios (18) y en los que he pasado un pulso al número 1 del servo para probar que el pin funciona en la placa. Me gustaría saber cómo realizar un movimiento simple, incluso si son 3 servos que serían 1 pierna.



Mi código es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include "mbed.h"
 
#include "SoftPWM.h"
 
 
 
Serial serial(PC_6, PA_12);
 
 
 
SoftPWM servo1(PB_8);
 
SoftPWM servo2(PB_9);
 
SoftPWM servo3(PB_7);
 
 
 
SoftPWM servo4(PA_0);
 
SoftPWM servo5(PA_1);
 
SoftPWM servo6(PB_0);
 
 
 
SoftPWM servo7(PB_1);
 
SoftPWM servo8(PA_3);
 
SoftPWM servo9(PA_2);
 
 
 
SoftPWM servo10(PA_5);
 
SoftPWM servo11(PA_6);
 
SoftPWM servo12(PA_7);
 
 
 
SoftPWM servo13(PB_6);
 
SoftPWM servo14(PA_9);
 
SoftPWM servo15(PA_8);
 
 
 
SoftPWM servo16(PB_10);
 
SoftPWM servo17(PB_3);
 
SoftPWM servo18(PA_10);
 
 
 
 
 
int main() {
 
   servo1.period_us(20000);
 
   int servopulsewidth=1000;
 
   int si_mueve = 1200;
 
   int no_mueve = 1900;
 
   bool movimiento = false;
 
   servo1.pulsewidth_us(servopulsewidth);
 
   while(1){
 
     if (movimiento == true) {
 
      servo1.pulsewidth_us(si_mueve);
 
      serial.printf("YES: %f\r\n", servo1.read());
 
    } else {
 
      servo1.pulsewidth_us(no_mueve);
 
      serial.printf("NO: %f\r\n", servo1.read());
 
 
 
    }
 
     movimiento = !movimiento;
 
     wait_ms(250);
 
     }
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder