Размер видео: 1280 X 720853 X 480640 X 360
Показать панель управления
Автовоспроизведение
Автоповтор
They may be two limbs short, but still... the ultimate arachnophobe nightmare!
This design is amazing! I like how you have only two servos per limb
How you guys do this! It's Amazoing.👍👍
Great job!
How did you remove jittering of these servos?
Just don't teach it to self replicate!
That looks really good. Are the 3d printed parts available to anyone?
Sure. www.thingiverse.com/thing:3629836
Is it ready
can you share the 3d model ? it seems like the best ive seen.
www.thingiverse.com/thing:3629836
Is that running a canned cycle or are you controlling the movement?
Hi buddy i have this robot as a project in my collage can you just gimme any link for anyone can build amazing code ?
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
are sg90 can handle such weight ?
There are always 4 of the legs on the ground so the weight is always split between multiple sg90s.
Which servos are used
yo can i get the files used to design this? building one rn
U still have the code? Would u share it? 😢
#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
@@jerryhanna7869 luv u so much!! how could I thank you
They may be two limbs short, but still... the ultimate arachnophobe nightmare!
This design is amazing! I like how you have only two servos per limb
How you guys do this! It's Amazoing.👍👍
Great job!
How did you remove jittering of these servos?
Just don't teach it to self replicate!
That looks really good.
Are the 3d printed parts available to anyone?
Sure. www.thingiverse.com/thing:3629836
Is it ready
can you share the 3d model ? it seems like the best ive seen.
www.thingiverse.com/thing:3629836
Is that running a canned cycle or are you controlling the movement?
Hi buddy i have this robot as a project in my collage can you just gimme any link for anyone can build amazing code ?
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
are sg90 can handle such weight ?
There are always 4 of the legs on the ground so the weight is always split between multiple sg90s.
Which servos are used
yo can i get the files used to design this? building one rn
www.thingiverse.com/thing:3629836
U still have the code? Would u share it? 😢
#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
@@jerryhanna7869 luv u so much!!
how could I thank you