不带胳膊的版本

#include <Servo.h>
#include <Oscillator.h>
#include <EEPROM.h>#define N_SERVOS 4
//-- First step: Configure the pins where the servos are attached
/*--------------- |     O   O     ||---------------|
YR 3==> |               | <== YL 2--------------- ||     ||||     ||
RR 5==>   -----   ------  <== RL 4|-----   ------|
*/
#define EEPROM_TRIM false
// Activate to take callibration data from internal memory
#define TRIM_RR 7
#define TRIM_RL 4
#define TRIM_YR  4
#define TRIM_YL -7
//OTTO.setTrims(-7,-4,-4,7);#define PIN_RR 5
#define PIN_RL 4
#define PIN_YR 3
#define PIN_YL 2#define INTERVALTIME 10.0 Oscillator servo[N_SERVOS];void goingUp(int tempo);
void drunk (int tempo);
void noGravity(int tempo);
void kickLeft(int tempo);
void kickRight(int tempo);
void run(int steps, int T=500);
void walk(int steps, int T=1000);
void backyard(int steps, int T=3000);
void backyardSlow(int steps, int T=5000);
void turnLeft(int steps, int T=3000);
void turnRight(int steps, int T=3000);
void moonWalkLeft(int steps, int T=1000);
void moonWalkRight(int steps, int T=1000);
void crusaito(int steps, int T=1000);
void swing(int steps, int T=1000);
void upDown(int steps, int T=1000);
void flapping(int steps, int T=1000);void setup()
{Serial.begin(19200);servo[0].attach(PIN_RR);servo[1].attach(PIN_RL);servo[2].attach(PIN_YR);servo[3].attach(PIN_YL);//EEPROM.write(0,TRIM_RR);//EEPROM.write(1,TRIM_RL);//EEPROM.write(2,TRIM_YR);//EEPROM.write(3,TRIM_YL);int trim;if(EEPROM_TRIM){for(int x=0;x<4;x++){trim=EEPROM.read(x);if(trim>128)trim=trim-256;Serial.print("TRIM ");Serial.print(x);Serial.print(" en ");Serial.println(trim);servo[x].SetTrim(trim);}}else{servo[0].SetTrim(TRIM_RR);servo[1].SetTrim(TRIM_RL);servo[2].SetTrim(TRIM_YR);servo[3].SetTrim(TRIM_YL);}for(int i=0;i<4;i++) servo[i].SetPosition(90);
}// TEMPO: 121 BPM
int t=495;
double pause=0;void loop()
{// if(Serial.available()){//  char init = Serial.read();// if (init=='X'){//   delay(4000); //3000 - 4500dance();//for(int i=0;i<4;i++) servo[i].SetPosition(90);for(int i=0;i<4;i++) servo[i].SetPosition(90);// }// }
}void dance(){primera_parte();segunda_parte();moonWalkLeft(4,t*2);moonWalkRight(4,t*2);moonWalkLeft(4,t*2);moonWalkRight(4,t*2);primera_parte(); crusaito(1,t*8);crusaito(1,t*7);for (int i=0; i<16; i++){flapping(1,t/4);delay(3*t/4);}moonWalkRight(4,t*2);moonWalkLeft(4,t*2);moonWalkRight(4,t*2);moonWalkLeft(4,t*2);drunk(t*4);drunk(t*4);drunk(t*4);drunk(t*4);kickLeft(t);kickRight(t);drunk(t*8);drunk(t*4);drunk(t/2);delay(t*4); drunk(t/2);delay(t*4); walk(2,t*2);backyard(2,t*2);goingUp(t*2);goingUp(t*1);noGravity(t*2);crusaito(1,t*2);crusaito(1,t*8);crusaito(1,t*2);crusaito(1,t*8);crusaito(1,t*2);crusaito(1,t*3);delay(t);primera_parte();for (int i=0; i<32; i++){flapping(1,t/2);delay(t/2);}for(int i=0;i<4;i++) servo[i].SetPosition(90);
}//FUNCIONES DE CONTROL//void oscillate(int A[N_SERVOS], int O[N_SERVOS], int T, double phase_diff[N_SERVOS]){for (int i=0; i<4; i++) {servo[i].SetO(O[i]);servo[i].SetA(A[i]);servo[i].SetT(T);servo[i].SetPh(phase_diff[i]);}double ref=millis();for (double x=ref; x<T+ref; x=millis()){for (int i=0; i<4; i++){servo[i].refresh();}}
}unsigned long final_time;
unsigned long interval_time;
int oneTime;
int iteration;
float increment[N_SERVOS];
int oldPosition[]={90,90,90,90};void moveNServos(int time, int  newPosition[]){for(int i=0;i<N_SERVOS;i++)   increment[i] = ((newPosition[i])-oldPosition[i])/(time/INTERVALTIME);final_time =  millis() + time; iteration = 1; while(millis() < final_time){ //Javi del futuro cambia esto  interval_time = millis()+INTERVALTIME;  oneTime=0;      while(millis()<interval_time){   if(oneTime<1){ for(int i=0;i<N_SERVOS;i++){servo[i].SetPosition(oldPosition[i] + (iteration * increment[i]));}          iteration++;oneTime++;}}     }   for(int i=0;i<N_SERVOS;i++){ oldPosition[i] = newPosition[i];}
}//
PASOS DE BAILE
//void goingUp(int tempo){pause=millis();for(int i=0;i<4;i++) servo[i].SetPosition(90);delay(tempo);servo[0].SetPosition(80);servo[1].SetPosition(100);delay(tempo);servo[0].SetPosition(70);servo[1].SetPosition(110);delay(tempo);servo[0].SetPosition(60);servo[1].SetPosition(120);delay(tempo);servo[0].SetPosition(50);servo[1].SetPosition(130);delay(tempo);servo[0].SetPosition(40);servo[1].SetPosition(140);delay(tempo);servo[0].SetPosition(30);servo[1].SetPosition(150);delay(tempo);servo[0].SetPosition(20);servo[1].SetPosition(160);delay(tempo);while(millis()<pause+8*t);}void primera_parte(){int move1[4] = {60,120,90,90};int move2[4] = {90,90,90,90};int move3[4] = {40,140,90,90};for(int x=0; x<3; x++){for(int i=0; i<3; i++){lateral_fuerte(1,t/2);lateral_fuerte(0,t/4);lateral_fuerte(1,t/4);delay(t);}pause=millis();for(int i=0;i<4;i++) servo[i].SetPosition(90);moveNServos(t*0.4,move1);moveNServos(t*0.4,move2);while(millis()<(pause+t*2));}for(int i=0; i<2; i++){lateral_fuerte(1,t/2);lateral_fuerte(0,t/4);lateral_fuerte(1,t/4);delay(t);}pause=millis();for(int i=0;i<4;i++) servo[i].SetPosition(90);crusaito(1,t*1.4);moveNServos(t*1,move3);for(int i=0;i<4;i++) servo[i].SetPosition(90);while(millis()<(pause+t*4));
}void segunda_parte(){int move1[4] = {90,90,80,100};int move2[4] = {90,90,100,80};int move3[4] = {90,90,80,100};int move4[4] = {90,90,100,80};int move5[4] = {40,140,80,100};int move6[4] = {40,140,100,80};int move7[4] = {90,90,80,100};int move8[4] = {90,90,100,80};int move9[4] = {40,140,80,100};int move10[4] = {40,140,100,80};int move11[4] = {90,90,80,100};int move12[4] = {90,90,100,80};for(int x=0; x<7; x++){ for(int i=0; i<3; i++){pause=millis();moveNServos(t*0.15,move1);moveNServos(t*0.15,move2);moveNServos(t*0.15,move3);moveNServos(t*0.15,move4);while(millis()<(pause+t));}pause=millis();moveNServos(t*0.15,move5);moveNServos(t*0.15,move6);moveNServos(t*0.15,move7);moveNServos(t*0.15,move8);while(millis()<(pause+t));}for(int i=0; i<3; i++){pause=millis();moveNServos(t*0.15,move9);moveNServos(t*0.15,move10);moveNServos(t*0.15,move11);moveNServos(t*0.15,move12);while(millis()<(pause+t));}
}void lateral_fuerte(boolean side, int tempo){for(int i=0;i<4;i++) servo[i].SetPosition(90);if (side) servo[0].SetPosition(40);else servo[1].SetPosition(140);delay(tempo/2);servo[0].SetPosition(90);servo[1].SetPosition(90);delay(tempo/2);}void drunk (int tempo){pause=millis();int move1[] = {60,70,90,90};int move2[] = {110,120,90,90};int move3[] = {60,70,90,90};int move4[] = {110,120,90,90};moveNServos(tempo*0.235,move1);moveNServos(tempo*0.235,move2);moveNServos(tempo*0.235,move3);moveNServos(tempo*0.235,move4);while(millis()<(pause+tempo));}void noGravity(int tempo){int move1[4] = {120,140,90,90};int move2[4] = {140,140,90,90};int move3[4] = {120,140,90,90};int move4[4] = {90,90,90,90};for(int i=0;i<4;i++) servo[i].SetPosition(90);for(int i=0;i<N_SERVOS;i++) oldPosition[i]=90;moveNServos(tempo*2,move1);moveNServos(tempo*2,move2);delay(tempo*2);moveNServos(tempo*2,move3);moveNServos(tempo*2,move4);}void kickLeft(int tempo){for(int i=0;i<4;i++) servo[i].SetPosition(90);delay(tempo);servo[0].SetPosition(50); //pie derechoservo[1].SetPosition(70); //pie izquierodelay(tempo);servo[0].SetPosition(80); //pie derechoservo[1].SetPosition(70); //pie izquierodelay(tempo/4);servo[0].SetPosition(30); //pie derechoservo[1].SetPosition(70); //pie izquierodelay(tempo/4);servo[0].SetPosition(80); //pie derechoservo[1].SetPosition(70); //pie izquierodelay(tempo/4);servo[0].SetPosition(30); //pie derechoservo[1].SetPosition(70); //pie izquierodelay(tempo/4);servo[0].SetPosition(80); //pie derechoservo[1].SetPosition(70); //pie izquierodelay(tempo);
}void kickRight(int tempo){
for(int i=0;i<4;i++) servo[i].SetPosition(90);delay(tempo);servo[0].SetPosition(110); //pie derechoservo[1].SetPosition(130); //pie izquierodelay(tempo);servo[0].SetPosition(110); //pie derechoservo[1].SetPosition(100); //pie izquierodelay(tempo/4);servo[0].SetPosition(110); //pie derechoservo[1].SetPosition(150); //pie izquierodelay(tempo/4);servo[0].SetPosition(110); //pie derechoservo[1].SetPosition(80); //pie izquierodelay(tempo/4);servo[0].SetPosition(110); //pie derechoservo[1].SetPosition(150); //pie izquierodelay(tempo/4);servo[0].SetPosition(110); //pie derechoservo[1].SetPosition(100); //pie izquierodelay(tempo);
}void walk(int steps, int T){int A[4]= {15, 15, 30, 30};int O[4] = {0, 0, 0, 0};double phase_diff[4] = {DEG2RAD(0), DEG2RAD(0), DEG2RAD(90), DEG2RAD(90)};for(int i=0;i<steps;i++)oscillate(A,O, T, phase_diff);
}void run(int steps, int T){int A[4]= {10, 10, 10, 10};int O[4] = {0, 0, 0, 0};double phase_diff[4] = {DEG2RAD(0), DEG2RAD(0), DEG2RAD(90), DEG2RAD(90)}; for(int i=0;i<steps;i++)oscillate(A,O, T, phase_diff);
}void backyard(int steps, int T){int A[4]= {15, 15, 30, 30};int O[4] = {0, 0, 0, 0};double phase_diff[4] = {DEG2RAD(0), DEG2RAD(0), DEG2RAD(-90), DEG2RAD(-90)}; for(int i=0;i<steps;i++)oscillate(A,O, T, phase_diff);
}void backyardSlow(int steps, int T){int A[4]= {15, 15, 30, 30};int O[4] = {0, 0, 0, 0};double phase_diff[4] = {DEG2RAD(0), DEG2RAD(0), DEG2RAD(-90), DEG2RAD(-90)}; for(int i=0;i<steps;i++)oscillate(A,O, T, phase_diff);
}void turnLeft(int steps, int T){int A[4]= {20, 20, 10, 30};int O[4] = {0, 0, 0, 0};double phase_diff[4] = {DEG2RAD(0), DEG2RAD(0), DEG2RAD(90), DEG2RAD(90)}; for(int i=0;i<steps;i++)oscillate(A,O, T, phase_diff);
}void turnRight(int steps, int T){int A[4]= {20, 20, 30, 10};int O[4] = {0, 0, 0, 0};double phase_diff[4] = {DEG2RAD(0), DEG2RAD(0), DEG2RAD(90), DEG2RAD(90)}; for(int i=0;i<steps;i++)oscillate(A,O, T, phase_diff);
}void moonWalkRight(int steps, int T){int A[4]= {25, 25, 0, 0};int O[4] = {-15 ,15, 0, 0};double phase_diff[4] = {DEG2RAD(0), DEG2RAD(180 + 120), DEG2RAD(90), DEG2RAD(90)}; for(int i=0;i<steps;i++)oscillate(A,O, T, phase_diff);
}void moonWalkLeft(int steps, int T){int A[4]= {25, 25, 0, 0};int O[4] = {-15, 15, 0, 0};double phase_diff[4] = {DEG2RAD(0), DEG2RAD(180 - 120), DEG2RAD(90), DEG2RAD(90)}; for(int i=0;i<steps;i++)oscillate(A,O, T, phase_diff);
}void crusaito(int steps, int T){int A[4]= {25, 25, 30, 30};int O[4] = {- 15, 15, 0, 0};double phase_diff[4] = {DEG2RAD(0), DEG2RAD(180 + 120), DEG2RAD(90), DEG2RAD(90)}; for(int i=0;i<steps;i++)oscillate(A,O, T, phase_diff);
}void swing(int steps, int T){int A[4]= {25, 25, 0, 0};int O[4] = {-15, 15, 0, 0};double phase_diff[4] = {DEG2RAD(0), DEG2RAD(0), DEG2RAD(90), DEG2RAD(90)};for(int i=0;i<steps;i++)oscillate(A,O, T, phase_diff);
}void upDown(int steps, int T){int A[4]= {25, 25, 0, 0};int O[4] = {-15, 15, 0, 0};double phase_diff[4] = {DEG2RAD(180), DEG2RAD(0), DEG2RAD(270), DEG2RAD(270)};for(int i=0;i<steps;i++)oscillate(A,O, T, phase_diff);
}void flapping(int steps, int T){int A[4]= {15, 15, 8, 8};int O[4] = {-A[0], A[1], 0, 0};double phase_diff[4] = {DEG2RAD(0), DEG2RAD(180), DEG2RAD(90), DEG2RAD(-90)};for(int i=0;i<steps;i++)oscillate(A,O, T, phase_diff);
}void test(int steps, int T){int A[4]= {15, 15, 8, 8};int O[4] = {-A[0] + 10, A[1] - 10, 0, 0};double phase_diff[4] = {DEG2RAD(0), DEG2RAD(180), DEG2RAD(90), DEG2RAD(-90)};for(int i=0;i<steps;i++)oscillate(A,O, T, phase_diff);
}

带胳膊的版本

#include <Servo.h>
#include <Oscillator.h>
#include <US.h>
#include <Otto.h>#define N_SERVOS 6 // 共6个舵机#define PIN_YL 2 // 左腿
#define PIN_YR 3 // 右腿
#define PIN_RL 4 // 左脚
#define PIN_RR 5 // 右脚
#define PIN_AL 6 // 左胳膊
#define PIN_AR 7 // 右胳膊#define INTERVALTIME 10.0 Oscillator servo[N_SERVOS];int t=495;
double pause=0;void setup()
{ Serial.begin(9600); // 设置舵机引脚servo[0].attach(PIN_RR);servo[1].attach(PIN_RL);servo[2].attach(PIN_YR);servo[3].attach(PIN_YL);servo[4].attach(PIN_AR); //右胳膊 90-平直、0-平直servo[5].attach(PIN_AL); //左胳膊 90-平直、180-平直for(int i=0;i<N_SERVOS;i++) // 舵机归位{servo[i].SetPosition(90);}
} void loop()
{ dance();
}void dance()
{primera_parte();segunda_parte();moonWalkLeft(4,t*2);moonWalkRight(4,t*2);moonWalkLeft(4,t*2);moonWalkRight(4,t*2);primera_parte(); crusaito(1,t*8);crusaito(1,t*7);for (int i=0; i<16; i++){flapping(1,t/4);delay(3*t/4);}moonWalkRight(4,t*2);moonWalkLeft(4,t*2);moonWalkRight(4,t*2);moonWalkLeft(4,t*2);drunk(t*4);drunk(t*4);drunk(t*4);drunk(t*4);kickLeft(t);
//  kickRight(t);drunk(t*8);drunk(t*4);drunk(t/2);delay(t*4); drunk(t/2);delay(t*4); walk(2,t*2);
//  backyard(2,t*2);
//  goingUp(t*2);
//  goingUp(t*1);
//  noGravity(t*2);crusaito(1,t*2);crusaito(1,t*8);crusaito(1,t*2);crusaito(1,t*8);crusaito(1,t*2);crusaito(1,t*3);delay(t);primera_parte();for (int i=0; i<32; i++){flapping(1,t/2);delay(t/2);}for(int i=0;i<4;i++) {servo[i].SetPosition(90);}
}void oscillate(int A[N_SERVOS], int O[N_SERVOS], int T, double phase_diff[N_SERVOS])
{for (int i=0; i<N_SERVOS; i++){servo[i].SetO(O[i]);servo[i].SetA(A[i]);servo[i].SetT(T);servo[i].SetPh(phase_diff[i]);}double ref=millis();for (double x=ref; x<T+ref; x=millis()){for (int i=0; i<N_SERVOS; i++){servo[i].refresh();}}
}//
/所 有 动 作(以下) ///
//
void run(int steps, int T)
{// 右脚 左脚 右腿 左腿 右胳膊 左胳膊int A[6]= {15, 15, 30, 30, 30, 30}; // 移动幅度 (引脚对应分别是:右脚 左脚 右腿 左腿 左胳膊 右胳膊)int O[6] = {0, 0, 0, 0, 0, 0}; // 偏移  (+偏右 -偏左)double phase_diff[6] = {DEG2RAD(0), DEG2RAD(0), DEG2RAD(90), DEG2RAD(90), DEG2RAD(0), DEG2RAD(0)}; for(int i=0;i<steps;i++){oscillate(A,O, T, phase_diff);}
}void walk(int steps, int T)
{int A[6]= {10, 10, 10, 10, 20, 20}; // 移动幅度 (引脚对应分别是:右脚 左脚 右腿 左腿 右胳膊 左胳膊)int O[6] = {0, 0, 0, 0, 0, 0}; // 偏移  (+偏右 -偏左)double phase_diff[6] = {DEG2RAD(0), DEG2RAD(0), DEG2RAD(90), DEG2RAD(90), DEG2RAD(0), DEG2RAD(0)}; for(int i=0;i<steps;i++){oscillate(A,O, T, phase_diff);}
}void crusaito(int steps, int T)
{int A[6]= {25, 25, 30, 30, 30, 30};int O[6] = {- 15, 15, 0, 0, 0, 0};double phase_diff[6] = {DEG2RAD(0), DEG2RAD(180 + 120), DEG2RAD(90), DEG2RAD(90), DEG2RAD(0), DEG2RAD(0)}; for(int i=0;i<steps;i++){oscillate(A,O, T, phase_diff);}
}void moonWalkLeft(int steps, int T)
{//向左移动,左胳膊在上大幅度摆,右胳膊在下小幅度摆int A[6]= {25, 25, 0, 0, 10, 30};int O[6] = {-15, 15, 0, 0, 40, 0};double phase_diff[6] = {DEG2RAD(0), DEG2RAD(180 - 120), DEG2RAD(90), DEG2RAD(90), DEG2RAD(0), DEG2RAD(0)}; for(int i=0;i<steps;i++){oscillate(A,O, T, phase_diff);}
}void moonWalkRight(int steps, int T)
{//向右移动,右胳膊在上大幅度摆,左胳膊在下小幅度摆int A[6]= {25, 25, 0, 0, 30, 10};int O[6] = {-15 ,15, 0, 0, 0, -40};double phase_diff[6] = {DEG2RAD(0), DEG2RAD(180 + 120), DEG2RAD(90), DEG2RAD(90)}; for(int i=0;i<steps;i++){oscillate(A,O, T, phase_diff);}
}void flapping(int steps, int T)
{int A[6]= {15, 15, 8, 8, 30, 30};int O[6] = {-A[0], A[1], 0, 0, 0, 30};double phase_diff[6] = {DEG2RAD(0), DEG2RAD(180), DEG2RAD(90), DEG2RAD(-90), DEG2RAD(0), DEG2RAD(180)};for(int i=0;i<steps;i++){oscillate(A,O, T, phase_diff);}
}void drunk (int tempo)
{pause=millis();int move1[6] = {60,70,90,90,0,180};int move2[6] = {110,120,90,90,45,145};int move3[6] = {60,70,90,90,0,180};int move4[6] = {110,120,90,90,45,145};moveNServos(tempo*0.235, move1);moveNServos(tempo*0.235, move2);moveNServos(tempo*0.235, move3);moveNServos(tempo*0.235, move4);while(millis()<(pause+tempo));
}void kickLeft(int tempo)
{for(int i=0;i<4;i++) {servo[i].SetPosition(90);}delay(tempo);servo[0].SetPosition(50); //pie derechoservo[1].SetPosition(70); //pie izquierodelay(tempo);servo[0].SetPosition(80); //pie derechoservo[1].SetPosition(70); //pie izquierodelay(tempo/4);servo[0].SetPosition(30); //pie derechoservo[1].SetPosition(70); //pie izquierodelay(tempo/4);servo[0].SetPosition(80); //pie derechoservo[1].SetPosition(70); //pie izquierodelay(tempo/4);servo[0].SetPosition(30); //pie derechoservo[1].SetPosition(70); //pie izquierodelay(tempo/4);servo[0].SetPosition(80); //pie derechoservo[1].SetPosition(70); //pie izquierodelay(tempo);
}
//
/基 本 动 作(以上) ///
////单腿原地滑步+胳膊扭动,其余部位保持90°。
//tempo表示对应的时间间隔,side-1右滑,side-0左滑
void lateral_fuerte(boolean side, int tempo)
{for(int i=0;i<6;i++)//舵机归位 {servo[i].SetPosition(90);}if (side){   servo[0].SetPosition(40);servo[4].SetPosition(140);delay(tempo/10);}else {servo[1].SetPosition(140);servo[5].SetPosition(40);delay(tempo/10);}delay(tempo/2);servo[0].SetPosition(90);servo[1].SetPosition(90);servo[4].SetPosition(90);servo[5].SetPosition(90);delay(tempo/2);
}unsigned long final_time;
unsigned long interval_time;
int oneTime;
int iteration;
float increment[N_SERVOS];
int oldPosition[]={90,90,90,90,90,90};
//移动
void moveNServos(int time, int  newPosition[])
{for(int i=0;i<N_SERVOS;i++)   {increment[i] = ((newPosition[i])-oldPosition[i])/(time/INTERVALTIME);}final_time =  millis() + time; iteration = 1; while(millis() < final_time){ interval_time = millis()+INTERVALTIME;  oneTime=0;      while(millis()<interval_time){      if(oneTime<1){ for(int i=0;i<N_SERVOS;i++){servo[i].SetPosition(oldPosition[i] + (iteration * increment[i]));}         iteration++;oneTime++;}}     }   for(int i=0;i<N_SERVOS;i++){  oldPosition[i] = newPosition[i];}
}//第一套动作 - 滑步
void primera_parte()
{int move1[6] = {60,120,90,90,140,40};int move2[6] = {90,90,90,90,90,90};int move3[6] = {40,140,90,90,40,140};for(int x=0; x<3; x++){for(int i=0; i<3; i++){lateral_fuerte(1,t/2);lateral_fuerte(0,t/4);lateral_fuerte(1,t/4);delay(t);}pause=millis();for(int i=0;i<6;i++) // 舵机归位 {servo[i].SetPosition(90);}moveNServos(t*0.4,move1);moveNServos(t*0.4,move2);while(millis()<(pause+t*2));}for(int i=0; i<2; i++){lateral_fuerte(1,t/2);lateral_fuerte(0,t/4);lateral_fuerte(1,t/4);delay(t);}pause=millis();for(int i=0;i<6;i++) // 舵机归位  {servo[i].SetPosition(90);}crusaito(1,t*1.4);moveNServos(t*1,move3);for(int i=0;i<6;i++) // 舵机归位  {servo[i].SetPosition(90);}while(millis()<(pause+t*4));
}//第二套动作 - 抖腿
void segunda_parte()
{//抖腿int move1[6] = {90,90,80,100,0,0};int move2[6] = {90,90,100,80,0,0};int move3[6] = {90,90,80,100,0,0};int move4[6] = {90,90,100,80,0,0};//小高潮int move5[6] = {40,140,80,100,90,90};int move6[6] = {40,140,100,80,90,90};int move7[6] = {90,90,80,100,90,90};int move8[6] = {90,90,100,80,90,90};//大高潮int move9[6] = {40,140,80,100,0,180};int move10[6] = {40,140,100,80,40,140};int move11[6] = {90,90,80,100,0,180};int move12[6] = {90,90,100,80,40,140};for(int x=0; x<7; x++){ for(int i=0; i<3; i++){pause=millis();moveNServos(t*0.15,move1);moveNServos(t*0.15,move2);moveNServos(t*0.15,move3);moveNServos(t*0.15,move4);while(millis()<(pause+t));}pause=millis();moveNServos(t*0.15,move5);moveNServos(t*0.15,move6);moveNServos(t*0.15,move7);moveNServos(t*0.15,move8);while(millis()<(pause+t));}for(int i=0; i<3; i++){pause=millis();moveNServos(t*0.15,move9);moveNServos(t*0.15,move10);moveNServos(t*0.15,move11);moveNServos(t*0.15,move12);while(millis()<(pause+t));}
}

OTTO机器人之太空舞步实现(带胳膊+不带胳膊)相关推荐

  1. 【Arduino】OTTO机器人(做二次开发的一点点总结)

    偶然一个机会得以接触一下Arduino,了解一下Arduino代码的编写模式,接触了C++函数封装,算是真正接触了一下项目开发,也意识到项目开发中的种种问题不是写代码能解决的,在阅读别人代码时也需要有 ...

  2. DIY制作otto机器人

    DIY制作otto机器人 外型 3D打印 SolidWorks 三维机器人原理图 成品涂色 硬件 准备 连接安装 软件 准备 Arduino程序 成品 后续 外型 3D打印 3D打印技术出现在20世纪 ...

  3. 对未来计算机的畅想英文,机器人对我们未来的生活英语作文带翻译

    010在线为您甄选多篇描写机器人对我们未来的生活英语作文带翻译,机器人对我们未来的生活英语作文带翻译精选,机器人对我们未来的生活英语作文带翻译大全,有议论,叙事 ,想象等形式.文章字数有400字.60 ...

  4. 解释三度带和六度带的概念以及各坐标系如何定义

    ★ 地形图坐标系:我国的地形图采用高斯-克吕格平面直角坐标系.在该坐标系中,横轴:赤道,用Y表示:纵轴:中央经线,用X表示:坐标原点:中央经线与赤道的交点,用O表示.赤道以南为负,以北为正:中央经线以 ...

  5. 张朝阳直播带货首秀 带的不仅是好物而是价值平台

    6月8日晚7点,搜狐公司董事局主席兼CEO.搜狐视频CEO张朝阳在搜狐视频APP关注流中开启个人直播带货首秀. 此次直播带货以<Charles的好物分享>为主题,模式与众不同,此次张朝阳带 ...

  6. 什么是带内管理 带外管理?(转)

    什么叫带外管理? 常见的设备管理方式有SNMP.RMON.Web.TELNET以及通过CONSOLE.AUX接口管理,有些高端设备还具备100BASE-TX的带外管理端口. 我在网上查到大概SNMP. ...

  7. linux 构造函数 throw,在自定义异常的方法/构造函数签名中带和不带throw()的C++...

    我是C++的初学者,因此对这个愚蠢的问题表示歉意.我在这里发布它,因为我无法在stackoverflow上找到类似的答案.在自定义异常的方法/构造函数签名中带和不带throw()的C++ 我是通过在C ...

  8. console线驱动安装_低压灯带和高压灯带区别是啥 安装方法是啥?

    灯带是很多朋友都知道的,而且一般都是在客厅比较常见,灯带分为低压和高压两个,这两者也是有一定区别的,很多人也在纠结购买哪种灯带比较好,下面就跟装一网一起来看看低压灯带和高压灯带区别以及安装方法,希望大 ...

  9. Python带*参数和带**参数:可变参数

    一.理论解释: *参数与**参数是Python参数中的重点知识,他们都被称为可变参数(任意参数),我们经常会在代码中看到*args.**kwargs 作为函数定义时:收集未匹配参数组成tuple或di ...

最新文章

  1. iOS SwiftUI篇-3 排版布局layout
  2. oracle constraint_type 问题
  3. Ring3下Dll注入方法整理汇总
  4. python3-numpy IO load()、save()、savez()、loadtxt()、savetxt()、tofile()、fromfile()
  5. 关于统计学,几个简单易懂的小故事
  6. mybatis配置 SqlMapConfig.xml user.xml
  7. 如何将Tomcat注册为系统服务
  8. 前端加密使用AES与后端配合(ECB)
  9. 中国象棋棋盘java_JAVA中用程序绘制国际象棋与中国象棋棋盘
  10. npm ERR! network request to https://registry.npmjs.org/axios failed, reason: Client network socket d
  11. 埃隆麝香下一件大事是向宽带发射4万颗卫星
  12. H310_710阵列卡配置.
  13. 满分回答教你如何应对面试中项目经验这一难关
  14. 命令win7 64安装mysql_Win7 64位安装MySQL及配置使用教程
  15. 猫狗大战pytorch实现
  16. Android设置系统休眠
  17. 移动CM101s_MV100_EMMC_M8233_强刷后全分区线刷固件包
  18. 网易传媒签约法国队、阿根廷队 世界杯独家内容盛宴即将开启
  19. 天下攘攘皆为利往——浏览器之争
  20. Typora 编辑器 怎么 制作大纲 以及 大纲级别

热门文章

  1. 视频教程-React.js框架技术-Java
  2. Slidingmenu与ViewPager广告栏滑动冲突解决分享
  3. WPS Office之Word文字域代码与查询-陈慧-专题视频课程
  4. a标签去掉下划线,ul去前面的点。
  5. 计算机毕业设计JAVA基金会系统网站mybatis+源码+调试部署+系统+数据库+lw
  6. 爱尔兰b表matlab,话务量、呼损率、爱尔兰B表、BHCA
  7. AE教程——2D角色动画设计(Science of Character Animation)
  8. 3,向appsrc发送数据,push模式
  9. 【基于python版本的连续英文分词实现java版本的英文分词器】
  10. matplotlib学习笔记(3)---热力图(Heat Map)