Vous êtes sur la page 1sur 9

#include <Wire.

h>
#include <Servo.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
int n = 1;
//////////////////////////////////////////////////////////////////////////////////
///////
//////////////////////////////////////////////////////////////////////////////////
///////
int walk2[72] = {
166,150,317,
162,151,316,
158,151,314,
155,151,313,
151,152,312,
147,152,311,
143,152,310,
140,152,309,
136,152,309,
132,152,308,
128,152,308,
124,152,308,
120,152,308,
116,152,308,
112,152,308,
108,152,309,
104,152,309,
101,152,310,
97,152,311,
93,152,312,
89,151,313,
86,151,314,
82,151,316,
78,150,317
};
int lift1[72] = {
53,154,296,
59,162,288,
66,170,280,
72,179,274,
79,187,267,

85,196,262,
92,205,257,
98,214,253,
105,222,249,
112,231,247,
118,240,245,
124,248,244,
126,246,248,
125,234,257,
123,223,267,
121,213,277,
120,202,288,
118,192,299,
117,182,311,
116,172,324,
115,162,337,
114,152,351,
113,141,366,
112,130,383
};
int lift3[72] = {
132,130,383,
131,141,366,
130,152,351,
129,162,337,
128,172,324,
127,182,311,
126,192,299,
124,202,288,
123,213,277,
121,223,267,
119,234,257,
118,246,248,
120,248,244,
126,240,245,
132,231,247,
139,222,249,
146,214,253,
152,205,257,
159,196,262,
165,187,267,
172,179,274,
178,170,280,
185,162,288,

191,154,296
};
int walk1[72] = {
128,138,360,
126,140,355,
125,142,349,
123,143,344,
122,145,339,
120,146,335,
118,147,330,
116,149,326,
114,150,322,
112,150,317,
110,151,314,
108,152,310,
106,152,306,
103,153,303,
101,153,299,
98,154,296,
95,154,293,
92,154,290,
89,154,287,
85,154,284,
82,154,282,
78,153,279,
74,153,277,
70,153,275
};
int walk3[72] = {
174,153,275,
170,153,277,
166,153,279,
162,154,282,
159,154,284,
155,154,287,
152,154,290,
149,154,293,
146,154,296,
143,153,299,
141,153,303,
138,152,306,
136,152,310,
134,151,314,

132,150,317,
130,150,322,
128,149,326,
126,147,330,
124,146,335,
122,145,339,
121,143,344,
119,142,349,
118,140,355,
116,138,360
};
int lift2[72] = {
85,142,350,
87,151,336,
90,161,323,
92,171,311,
95,180,300,
97,190,289,
101,199,279,
104,209,269,
107,219,259,
111,230,250,
115,241,242,
120,253,234,
124,253,234,
129,241,242,
133,230,250,
137,219,259,
140,209,269,
143,199,279,
147,190,289,
149,180,300,
152,171,311,
154,161,323,
157,151,336,
159,142,350
};
int walk6[48] = {
7,108,
8,106,
9,103,
10,101,
10,99,

11,97,
12,95,
12,93,
13,91,
13,89,
13,87,
14,85,
14,84,
14,82,
14,81,
14,79,
14,78,
14,76,
14,75,
14,74,
14,73,
14,72,
14,71,
14,70
};
int lift6[48] = {
14,79,
18,75,
22,72,
26,69,
30,66,
34,64,
38,61,
42,59,
46,58,
50,57,
54,56,
57,55,
56,57,
51,62,
46,66,
41,71,
37,76,
32,81,
27,86,
23,92,
18,98,
14,104,
9,111,

3,119
};
//////////////////////////////////////////////////////////////////////////////////
///////
//////////////////////////////////////////////////////////////////////////////////
///////
int S1A = 0;
int S1B = 1;
int S1C = 2;
int S2A = 3;
int S2B = 4;
int S2C = 5;
int S3A = 6;
int S3B = 7;
int S3C = 8;
int S4A = 9;
int S4B = 10;
int S4C = 11;
int S5A = 12;
int S5B = 13;
int S5C = 14;
int S6A = 15;
Servo S6B;
Servo S6C;
void setup() {
Serial.begin(9600);
S6B.attach(9);
S6C.attach(10);
pwm.begin();
pwm.setPWMFreq(60);

// Analog servos run at ~60 Hz updates

}
int crt = 15; // phi correction
void Walk() {
for (n = 0; n <= 23; n++) {
pwm.setPWM(S1A, 0, 198+walk1[23*3-(n*3)]);
pwm.setPWM(S1B, 0, 198+lift1[1+(n*3)]-(2.2*crt));
pwm.setPWM(S1C, 0, lift1[2+(n*3)]);
pwm.setPWM(S2A, 0, 198+walk2[(n*3)]);
pwm.setPWM(S2B, 0, 198+walk2[1+(n*3)]-(2.2*crt));

pwm.setPWM(S2C,
pwm.setPWM(S3A,
pwm.setPWM(S3B,
pwm.setPWM(S3C,

0,
0,
0,
0,

walk2[2+(n*3)]);
198+walk3[23*3-(n*3)]);
198+lift3[1+(n*3)]-crt);
lift3[2+(n*3)]);

pwm.setPWM(S4A, 0, 442-walk3[(n*3)]);
pwm.setPWM(S4B, 0, 442-walk3[1+(n*3)]+(2.2*crt));
pwm.setPWM(S4C, 0, 640-walk3[2+(n*3)]);
pwm.setPWM(S5A, 0 , 442-lift2[(n*3)]);
pwm.setPWM(S5B, 0, 442-lift2[1+(n*3)]+(2.2*crt));
pwm.setPWM(S5C, 0, 640-lift2[2+(n*3)]);
pwm.setPWM(S6A, 0, 442-walk1[(n*3)]);
S6B.write(90-walk6[(n*2)]+crt);
S6C.write(180-walk6[1+(n*2)]);
delay(200);
}
n = 0;
for (n = 0; n <= 23;
pwm.setPWM(S1A, 0,
pwm.setPWM(S1B, 0,
pwm.setPWM(S1C, 0,
pwm.setPWM(S2A, 0,
pwm.setPWM(S2B, 0,
pwm.setPWM(S2C, 0,
pwm.setPWM(S3A, 0,
pwm.setPWM(S3B, 0,
pwm.setPWM(S3C, 0,

n ++) {
198+walk1[(n*3)]);
198+walk1[1+(n*3)]-(2.2*crt));
walk1[2+(n*3)]);
198+lift2[(n*3)]);
198+lift2[1+(n*3)]-(2.2*crt));
lift2[2+(n*3)]);
198+walk3[(n*3)]);
198+walk3[1+(n*3)]-(2.2*crt));
walk3[2+(n*3)]);

pwm.setPWM(S4A, 0, 442-walk3[23*3-(n*3)]);
pwm.setPWM(S4B, 0, 442-lift3[1+(n*3)]+(2.2*crt));
pwm.setPWM(S4C, 0, 640-lift3[2+(n*3)]);
pwm.setPWM(S5A, 0 , 442-walk2[(n*3)]);
pwm.setPWM(S5B, 0, 442-walk2[1+(n*3)]+(2.2*crt));
pwm.setPWM(S5C, 0, 640-walk2[2+(n*3)]);
pwm.setPWM(S6A, 0, 442-walk1[23*3-(n*3)]);
S6B.write(90-lift6[(n*2)]+crt);
S6C.write(180-lift6[1+(n*2)]);
delay(200);
}
n = 0;
}
void Turn(int angle) {

for (n = 0; n <= 23;


pwm.setPWM(S1A, 0,
pwm.setPWM(S1B, 0,
pwm.setPWM(S1C, 0,
pwm.setPWM(S2A, 0,
pwm.setPWM(S2B, 0,
pwm.setPWM(S2C, 0,
pwm.setPWM(S3A, 0,
pwm.setPWM(S3B, 0,
pwm.setPWM(S3C, 0,

n++) {
198+walk1[23*3-(n*3)]);
198+lift1[1+(n*3)]);
lift1[2+(n*3)]);
198+walk2[(n*3)]+angle);
198+walk2[1+(n*3)]);
walk2[2+(n*3)]);
198+walk3[23*3-(n*3)]);
198+lift3[1+(n*3)]);
lift3[2+(n*3)]);

pwm.setPWM(S4A, 0, 442-walk3[(n*3)]+angle);
pwm.setPWM(S4B, 0, 442-walk3[1+(n*3)]);
pwm.setPWM(S4C, 0, 640-walk3[2+(n*3)]);
pwm.setPWM(S5A, 0 , 442-lift2[(n*3)]);
pwm.setPWM(S5B, 0, 442-lift2[1+(n*3)]);
pwm.setPWM(S5C, 0, 640-lift2[2+(n*3)]);
pwm.setPWM(S6A, 0, 442-walk1[(n*3)]+angle);
S6B.write(90-walk6[(n*2)]);
S6C.write(180-walk6[1+(n*2)]);
delay(200);
}
n = 0;
for (n = 0; n <= 23;
pwm.setPWM(S1A, 0,
pwm.setPWM(S1B, 0,
pwm.setPWM(S1C, 0,
pwm.setPWM(S2A, 0,
pwm.setPWM(S2B, 0,
pwm.setPWM(S2C, 0,
pwm.setPWM(S3A, 0,
pwm.setPWM(S3B, 0,
pwm.setPWM(S3C, 0,

n ++) {
198+walk1[(n*3)]+angle);
198+walk1[1+(n*3)]);
walk1[2+(n*3)]);
198+lift2[(n*3)]);
198+lift2[1+(n*3)]);
lift2[2+(n*3)]);
198+walk3[(n*3)]+angle);
198+walk3[1+(n*3)]);
walk3[2+(n*3)]);

pwm.setPWM(S4A, 0, 442-walk3[23*3-(n*3)]);
pwm.setPWM(S4B, 0, 442-lift3[1+(n*3)]);
pwm.setPWM(S4C, 0, 640-lift3[2+(n*3)]);
pwm.setPWM(S5A, 0 , 442-walk2[(n*3)]+angle);
pwm.setPWM(S5B, 0, 442-walk2[1+(n*3)]);
pwm.setPWM(S5C, 0, 640-walk2[2+(n*3)]);
pwm.setPWM(S6A, 0, 442-walk1[23*3-(n*3)]);
S6B.write(90-lift6[(n*2)]);
S6C.write(180-lift6[1+(n*2)]);

delay(200);
}
n = 0;
}
void loop() {
// Each function is two steps, one of each set of legs
Walk();
// Turn(33); // Positive should be left // 33 is 15 degrees in PWM
//// Turn(-33); // Negative should be right
// Turn(33);
// Turn(33);
// Turn(33);
// Turn(33);
}

Vous aimerez peut-être aussi