Hexapod servo test 2

It's alive! 12 servos running on a PCA9685 board

Пікірлер: 20

  • @obelusstem199
    @obelusstem1993 ай бұрын

    This design is amazing! I like how you have only two servos per limb

  • @ukrainerobotics
    @ukrainerobotics Жыл бұрын

    Great job!

  • @JASMVNT
    @JASMVNT Жыл бұрын

    How you guys do this! It's Amazoing.👍👍

  • @GCKteamKrispy
    @GCKteamKrispy6 ай бұрын

    How did you remove jittering of these servos?

  • @waynew6707
    @waynew67075 жыл бұрын

    Is that running a canned cycle or are you controlling the movement?

  • @Anime-zp9gd
    @Anime-zp9gd6 ай бұрын

    Which servos are used

  • @Pathan_aamir2212
    @Pathan_aamir2212 Жыл бұрын

    Is it ready

  • @marshallsober
    @marshallsober Жыл бұрын

    can you share the 3d model ? it seems like the best ive seen.

  • @jerryhanna7869

    @jerryhanna7869

    Жыл бұрын

    www.thingiverse.com/thing:3629836

  • @xs1l3n7x
    @xs1l3n7x7 ай бұрын

    That looks really good. Are the 3d printed parts available to anyone?

  • @jerryhanna7869

    @jerryhanna7869

    7 ай бұрын

    Sure. www.thingiverse.com/thing:3629836

  • @RomanGen1
    @RomanGen1 Жыл бұрын

    are sg90 can handle such weight ?

  • @jerryhanna7869

    @jerryhanna7869

    Жыл бұрын

    There are always 4 of the legs on the ground so the weight is always split between multiple sg90s.

  • @surendarmalai96
    @surendarmalai96Ай бұрын

    yo can i get the files used to design this? building one rn

  • @jerryhanna7869

    @jerryhanna7869

    Ай бұрын

    www.thingiverse.com/thing:3629836

  • @khaledmostafa9980
    @khaledmostafa9980Ай бұрын

    Hi buddy i have this robot as a project in my collage can you just gimme any link for anyone can build amazing code ?

  • @jerryhanna7869

    @jerryhanna7869

    Ай бұрын

    Here's the main code... #include #include #define CUSTOM_SETTINGS #define INCLUDE_GAMEPAD_MODULE #include Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); int DELAY_BETWEEN_MOVES = 10; int staticpos = 375; int delta1 = 120; int delta2 = 50; int delta3 = 38; unsigned char direction = 'h'; unsigned char previousdirection = 'h'; void setup() { pwm.begin(); Dabble.begin(9600); pwm.setPWMFreq(60); zeropoz(); delay(3000); } void loop() { previousdirection = direction; getdir(); switch(direction) { case 'U' : forward(); break; case 'D' : backward(); break; case 'L' : turnleft(); break; case 'R' : turnright(); break; case '-' : if(DELAY_BETWEEN_MOVES = 10) DELAY_BETWEEN_MOVES -= 5; direction = previousdirection; break; case 'h' : zeropoz(); break; default : forward(); } } void getdir() { Dabble.processInput(); if (GamePad.isUpPressed()) { direction = 'U'; } if (GamePad.isDownPressed()) { direction = 'D'; } if (GamePad.isLeftPressed()) { direction = 'L'; } if (GamePad.isRightPressed()) { direction = 'R'; } if (GamePad.isSquarePressed()) { direction = 'h'; } if (GamePad.isCirclePressed()) { direction = previousdirection; } if (GamePad.isCrossPressed()) { direction = '-'; } if (GamePad.isTrianglePressed()) { direction = '+'; } if (GamePad.isStartPressed()) { direction = previousdirection; } if (GamePad.isSelectPressed()) { direction = previousdirection; } } void zeropoz() { pwm.setPWM(0, 0, 375); pwm.setPWM(1, 0, 375); pwm.setPWM(2, 0, 375); pwm.setPWM(3, 0, 375); pwm.setPWM(4, 0, 375); pwm.setPWM(5, 0, 375); pwm.setPWM(6, 0, 375); pwm.setPWM(7, 0, 375); pwm.setPWM(8, 0, 375); pwm.setPWM(9, 0, 375); pwm.setPWM(10, 0, 375); pwm.setPWM(11, 0, 375); pwm.setPWM(12, 0, 375); } void walkpoz() { int pdelta1 = 60; pwm.setPWM(0, 0, 375); pwm.setPWM(1, 0, 375); pwm.setPWM(2, 0, 375-pdelta1); pwm.setPWM(3, 0, 375); pwm.setPWM(4, 0, 375+pdelta1); pwm.setPWM(5, 0, 375); pwm.setPWM(6, 0, 375); pwm.setPWM(7, 0, 375); pwm.setPWM(8, 0, 375-pdelta1); pwm.setPWM(9, 0, 375); pwm.setPWM(10, 0, 375+pdelta1); pwm.setPWM(11, 0, 375); } void forward() { Group1Up(); delay(DELAY_BETWEEN_MOVES); Group2Bw(); delay(DELAY_BETWEEN_MOVES); Group1Fw(); delay(DELAY_BETWEEN_MOVES); Group1Down(); delay(DELAY_BETWEEN_MOVES); Group2Up(); delay(DELAY_BETWEEN_MOVES); Group1Bw(); delay(DELAY_BETWEEN_MOVES); Group2Fw(); delay(DELAY_BETWEEN_MOVES); Group2Down(); delay(DELAY_BETWEEN_MOVES); } void backward() { Group1Up(); delay(DELAY_BETWEEN_MOVES); Group2Fw(); delay(DELAY_BETWEEN_MOVES); Group1Bw(); delay(DELAY_BETWEEN_MOVES); Group1Down(); delay(DELAY_BETWEEN_MOVES); Group2Up(); delay(DELAY_BETWEEN_MOVES); Group1Fw(); delay(DELAY_BETWEEN_MOVES); Group2Bw(); delay(DELAY_BETWEEN_MOVES); Group2Down(); delay(DELAY_BETWEEN_MOVES); } void turnleft(void) { Group1Up(); delay(DELAY_BETWEEN_MOVES); Group2Right(); delay(DELAY_BETWEEN_MOVES); Group1Left(); delay(DELAY_BETWEEN_MOVES); Group1Down(); delay(DELAY_BETWEEN_MOVES); Group2Up(); delay(DELAY_BETWEEN_MOVES); Group1Right(); delay(DELAY_BETWEEN_MOVES); Group2Left(); delay(DELAY_BETWEEN_MOVES); Group2Down(); delay(DELAY_BETWEEN_MOVES); } void turnright(void) { Group1Up(); delay(DELAY_BETWEEN_MOVES); Group2Left(); delay(DELAY_BETWEEN_MOVES); Group1Right(); delay(DELAY_BETWEEN_MOVES); Group1Down(); delay(DELAY_BETWEEN_MOVES); Group2Up(); delay(DELAY_BETWEEN_MOVES); Group1Left(); delay(DELAY_BETWEEN_MOVES); Group2Right(); delay(DELAY_BETWEEN_MOVES); Group2Down(); delay(DELAY_BETWEEN_MOVES); } void Group1Up() { for(int jk=375+delta2; jk>=375-delta1; jk--) { pwm.setPWM(1, 0, jk); //knee left back pwm.setPWM(5, 0, jk); //knee left front pwm.setPWM(9, 0, jk); //knee right middle } } void Group2Up() { for(int jk=375+delta2; jk>=375-delta1; jk--) { pwm.setPWM(3, 0, jk); //knee left middle pwm.setPWM(7, 0, jk); //knee right front pwm.setPWM(11, 0, jk); //knee righ back } } void Group1Down() { for(int jk=375-delta1; jk

  • @josemunoz-ev3dt
    @josemunoz-ev3dt6 ай бұрын

    U still have the code? Would u share it? 😢

  • @jerryhanna7869

    @jerryhanna7869

    6 ай бұрын

    #include #include #define CUSTOM_SETTINGS #define INCLUDE_GAMEPAD_MODULE #include Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); int DELAY_BETWEEN_MOVES = 10; int staticpos = 375; int delta1 = 120; int delta2 = 50; int delta3 = 38; unsigned char direction = 'h'; unsigned char previousdirection = 'h'; void setup() { pwm.begin(); Dabble.begin(9600); pwm.setPWMFreq(60); zeropoz(); delay(3000); } void loop() { previousdirection = direction; getdir(); switch(direction) { case 'U' : forward(); break; case 'D' : backward(); break; case 'L' : turnleft(); break; case 'R' : turnright(); break; case '-' : if(DELAY_BETWEEN_MOVES = 10) DELAY_BETWEEN_MOVES -= 5; direction = previousdirection; break; case 'h' : zeropoz(); break; default : forward(); } } void getdir() { Dabble.processInput(); if (GamePad.isUpPressed()) { direction = 'U'; } if (GamePad.isDownPressed()) { direction = 'D'; } if (GamePad.isLeftPressed()) { direction = 'L'; } if (GamePad.isRightPressed()) { direction = 'R'; } if (GamePad.isSquarePressed()) { direction = 'h'; } if (GamePad.isCirclePressed()) { direction = previousdirection; } if (GamePad.isCrossPressed()) { direction = '-'; } if (GamePad.isTrianglePressed()) { direction = '+'; } if (GamePad.isStartPressed()) { direction = previousdirection; } if (GamePad.isSelectPressed()) { direction = previousdirection; } } void zeropoz() { pwm.setPWM(0, 0, 375); pwm.setPWM(1, 0, 375); pwm.setPWM(2, 0, 375); pwm.setPWM(3, 0, 375); pwm.setPWM(4, 0, 375); pwm.setPWM(5, 0, 375); pwm.setPWM(6, 0, 375); pwm.setPWM(7, 0, 375); pwm.setPWM(8, 0, 375); pwm.setPWM(9, 0, 375); pwm.setPWM(10, 0, 375); pwm.setPWM(11, 0, 375); pwm.setPWM(12, 0, 375); } void walkpoz() { int pdelta1 = 60; pwm.setPWM(0, 0, 375); pwm.setPWM(1, 0, 375); pwm.setPWM(2, 0, 375-pdelta1); pwm.setPWM(3, 0, 375); pwm.setPWM(4, 0, 375+pdelta1); pwm.setPWM(5, 0, 375); pwm.setPWM(6, 0, 375); pwm.setPWM(7, 0, 375); pwm.setPWM(8, 0, 375-pdelta1); pwm.setPWM(9, 0, 375); pwm.setPWM(10, 0, 375+pdelta1); pwm.setPWM(11, 0, 375); } void forward() { Group1Up(); delay(DELAY_BETWEEN_MOVES); Group2Bw(); delay(DELAY_BETWEEN_MOVES); Group1Fw(); delay(DELAY_BETWEEN_MOVES); Group1Down(); delay(DELAY_BETWEEN_MOVES); Group2Up(); delay(DELAY_BETWEEN_MOVES); Group1Bw(); delay(DELAY_BETWEEN_MOVES); Group2Fw(); delay(DELAY_BETWEEN_MOVES); Group2Down(); delay(DELAY_BETWEEN_MOVES); } void backward() { Group1Up(); delay(DELAY_BETWEEN_MOVES); Group2Fw(); delay(DELAY_BETWEEN_MOVES); Group1Bw(); delay(DELAY_BETWEEN_MOVES); Group1Down(); delay(DELAY_BETWEEN_MOVES); Group2Up(); delay(DELAY_BETWEEN_MOVES); Group1Fw(); delay(DELAY_BETWEEN_MOVES); Group2Bw(); delay(DELAY_BETWEEN_MOVES); Group2Down(); delay(DELAY_BETWEEN_MOVES); } void turnleft(void) { Group1Up(); delay(DELAY_BETWEEN_MOVES); Group2Right(); delay(DELAY_BETWEEN_MOVES); Group1Left(); delay(DELAY_BETWEEN_MOVES); Group1Down(); delay(DELAY_BETWEEN_MOVES); Group2Up(); delay(DELAY_BETWEEN_MOVES); Group1Right(); delay(DELAY_BETWEEN_MOVES); Group2Left(); delay(DELAY_BETWEEN_MOVES); Group2Down(); delay(DELAY_BETWEEN_MOVES); } void turnright(void) { Group1Up(); delay(DELAY_BETWEEN_MOVES); Group2Left(); delay(DELAY_BETWEEN_MOVES); Group1Right(); delay(DELAY_BETWEEN_MOVES); Group1Down(); delay(DELAY_BETWEEN_MOVES); Group2Up(); delay(DELAY_BETWEEN_MOVES); Group1Left(); delay(DELAY_BETWEEN_MOVES); Group2Right(); delay(DELAY_BETWEEN_MOVES); Group2Down(); delay(DELAY_BETWEEN_MOVES); } void Group1Up() { for(int jk=375+delta2; jk>=375-delta1; jk--) { pwm.setPWM(1, 0, jk); //knee left back pwm.setPWM(5, 0, jk); //knee left front pwm.setPWM(9, 0, jk); //knee right middle } } void Group2Up() { for(int jk=375+delta2; jk>=375-delta1; jk--) { pwm.setPWM(3, 0, jk); //knee left middle pwm.setPWM(7, 0, jk); //knee right front pwm.setPWM(11, 0, jk); //knee righ back } } void Group1Down() { for(int jk=375-delta1; jk

  • @josemunoz-ev3dt

    @josemunoz-ev3dt

    6 ай бұрын

    @@jerryhanna7869 luv u so much!! how could I thank you