ขนาดวิดีโอ: 1280 X 720853 X 480640 X 360
แสดงแผงควบคุมโปรแกรมเล่น
เล่นอัตโนมัติ
เล่นใหม่
This design is amazing! I like how you have only two servos per limb
Great job!
How you guys do this! It's Amazoing.👍👍
How did you remove jittering of these servos?
Which servos are used
Is that running a canned cycle or are you controlling the movement?
Is it ready
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.
That looks really good. Are the 3d printed parts available to anyone?
Sure. www.thingiverse.com/thing:3629836
can you share the 3d model ? it seems like the best ive seen.
www.thingiverse.com/thing:3629836
yo can i get the files used to design this? building one rn
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
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
This design is amazing! I like how you have only two servos per limb
Great job!
How you guys do this! It's Amazoing.👍👍
How did you remove jittering of these servos?
Which servos are used
Is that running a canned cycle or are you controlling the movement?
Is it ready
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.
That looks really good.
Are the 3d printed parts available to anyone?
Sure. www.thingiverse.com/thing:3629836
can you share the 3d model ? it seems like the best ive seen.
www.thingiverse.com/thing:3629836
yo can i get the files used to design this? building one rn
www.thingiverse.com/thing:3629836
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
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