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:
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


0