Hexapod servo test 2

แชร์
ฝัง
  • เผยแพร่เมื่อ 9 พ.ค. 2019
  • It's alive! 12 servos running on a PCA9685 board

ความคิดเห็น • 20

  • @obelusstem199
    @obelusstem199 4 หลายเดือนก่อน

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

  • @ukrainerobotics
    @ukrainerobotics ปีที่แล้ว

    Great job!

  • @JASMVNT
    @JASMVNT ปีที่แล้ว +2

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

  • @GCKteamKrispy
    @GCKteamKrispy 6 หลายเดือนก่อน +1

    How did you remove jittering of these servos?

  • @Anime-zp9gd
    @Anime-zp9gd 6 หลายเดือนก่อน

    Which servos are used

  • @waynew6707
    @waynew6707 5 ปีที่แล้ว

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

  • @Pathan_aamir2212
    @Pathan_aamir2212 ปีที่แล้ว

    Is it ready

  • @RomanGen1
    @RomanGen1 ปีที่แล้ว +1

    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.

  • @xs1l3n7x
    @xs1l3n7x 8 หลายเดือนก่อน +1

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

    • @jerryhanna7869
      @jerryhanna7869  8 หลายเดือนก่อน +1

      Sure. www.thingiverse.com/thing:3629836

  • @marshallsober
    @marshallsober ปีที่แล้ว

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

  • @surendarmalai96
    @surendarmalai96 2 หลายเดือนก่อน

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

    • @jerryhanna7869
      @jerryhanna7869  2 หลายเดือนก่อน

      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-ev3dt 7 หลายเดือนก่อน

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

    • @jerryhanna7869
      @jerryhanna7869  7 หลายเดือนก่อน

      #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 7 หลายเดือนก่อน

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