Movimiento simple de un hexápodo

Iniciado por JoseRomero, 5 Octubre 2018, 20:48 PM

0 Miembros y 1 Visitante están viendo este tema.

JoseRomero

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:

#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);

}

}