Розмір відео: 1280 X 720853 X 480640 X 360
Показувати елементи керування програвачем
Автоматичне відтворення
Автоповтор
They may be two limbs short, but still... the ultimate arachnophobe nightmare!
Just don't teach it to self replicate!
How you guys do this! It's Amazoing.👍👍
How did you remove jittering of these servos?
That looks really good. Are the 3d printed parts available to anyone?
Sure. www.thingiverse.com/thing:3629836
This design is amazing! I like how you have only two servos per limb
Which servos are used
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
Is that running a canned cycle or are you controlling the movement?
yo can i get the files used to design this? building one rn
www.thingiverse.com/thing:3629836
Is it ready
can you share the 3d model ? it seems like the best ive seen.
Great job!
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.
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!
Just don't teach it to self replicate!
How you guys do this! It's Amazoing.👍👍
How did you remove jittering of these servos?
That looks really good.
Are the 3d printed parts available to anyone?
Sure. www.thingiverse.com/thing:3629836
This design is amazing! I like how you have only two servos per limb
Which servos are used
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
Is that running a canned cycle or are you controlling the movement?
yo can i get the files used to design this? building one rn
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
Great job!
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.
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