範例:
Arduino程式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | #include <Servo.h>
const uint8_t ServoLeftLegPin =15; // D8 or 15
const uint8_t ServoRightLegPin=2; // D4 or 2
const uint8_t ServoLeftFootPin =13; // D7 or 13
const uint8_t ServoRightFootPin =0; // D3 or 0
const uint8_t ServoLeftArmPin =D0; // D0 or 16
const uint8_t ServoRightArmPin =3; // RX or 3
const uint8_t ServoHeadPin =1; // TX or 1
Servo myservoLeftLeg;
Servo myservoLeftFoot;
Servo myservoRightFoot;
Servo myservoRightLeg;
Servo myservoLeftArm;
Servo myservoRightArm;
Servo myservoHead;
int LA0= 60 +0; // Left Leg standing Position; 0 = Full Tilt Right 180 = Full Tilt Left Default = 60
int RA0= 120 +0;// Right Leg standing position; 0 = Full Tilt Right 180 = Full Tilt Left Default = 120
int LA1= 180; // Left Leg roll Position; 0 = Full Tilt Right 180 = Full Tilt Left Default = 170
int RA1= 0; // Right Leg roll position,0 = Full Tilt Right 180 = Full Tilt Left Default = 10
int LATL= LA0 +40; // Left Leg tilt left walking position,0 = Full Tilt Right 180 = Full Tilt Left Default = 90
int RATL= RA0 +60; // Right Leg tilt left walking position,0 = Full Tilt Right 180 = Full Tilt Left Default = 180
int LATR= LA0 -60; // Left Leg tilt right walking position,0 = Full Tilt Right 180 = Full Tilt Left Default = 0
int RATR= RA0 -40; // Right Leg tilt right walking position,0 = Full Tilt Right 180 = Full Tilt Left Default = 90
int LFFWRS=12; // Left foot forward walking rotation Speed; 0 = Slowest 90 = Fastest Default = 20
int RFFWRS=12 ; // Right foot forward walking rotation Speed; 0 = Slowest 90 = Fastest Default = 20
int LFBWRS= 12; // Left foot Backward walking rotation Speed; 0 = Slowest 90 = Fastest Default = 20
int RFBWRS= 12; // Right foot Backward walking rotation Speed; 0 = Slowest 90 = Fastest Default = 20
void NinjaHome()
{
myservoLeftFoot.attach(ServoLeftFootPin, 544, 2400);
myservoRightFoot.attach(ServoRightFootPin, 544, 2400);
myservoLeftLeg.attach(ServoLeftLegPin, 544, 2400);
myservoRightLeg.attach(ServoRightLegPin, 544, 2400);
myservoHead.attach(ServoHeadPin, 544, 2400);
myservoLeftArm.write(180);
myservoRightArm.write(0);
myservoHead.write(90);
delay(400);
myservoLeftFoot.write(90);
myservoRightFoot.write(90);
myservoLeftLeg.write(60);
myservoRightLeg.write(120);
delay(400);
myservoLeftLeg.detach();
myservoRightLeg.detach();
myservoLeftArm.detach();
myservoRightArm.detach();
myservoHead.detach();
}
void NinjaSetWalk()
{
myservoLeftArm.attach(ServoLeftArmPin, 544, 2400);
myservoRightArm.attach(ServoRightArmPin, 544, 2400);
myservoLeftArm.write(90);
myservoRightArm.write(90);
delay(200);
myservoLeftArm.detach();
myservoRightArm.detach();
myservoLeftLeg.attach(ServoLeftLegPin, 544, 2400);
myservoRightLeg.attach(ServoRightLegPin, 544, 2400);
myservoLeftLeg.write(LA0);
myservoRightLeg.write(RA0);
delay(300);
myservoLeftLeg.detach();
myservoRightLeg.detach();
myservoLeftArm.attach(ServoLeftArmPin, 544, 2400);
myservoRightArm.attach(ServoRightArmPin, 544, 2400);
myservoLeftArm.write(180);
myservoRightArm.write(0);
delay(300);
myservoLeftArm.detach();
myservoRightArm.detach();
}
void NinjaSetRoll()
{myservoLeftArm.attach(ServoLeftArmPin, 544, 2400);
myservoRightArm.attach(ServoRightArmPin, 544, 2400);
myservoLeftArm.write(90);myservoRightArm.write(90);
delay(200);
myservoLeftArm.detach();myservoRightArm.detach();
myservoLeftLeg.attach(ServoLeftLegPin, 544, 2400);
myservoRightLeg.attach(ServoRightLegPin, 544, 2400);
myservoLeftLeg.write(LA1);
myservoRightLeg.write(RA1);
delay(300);
myservoLeftLeg.detach();myservoRightLeg.detach();
myservoLeftArm.attach(ServoLeftArmPin, 544, 2400);
myservoRightArm.attach(ServoRightArmPin, 544, 2400);
myservoLeftArm.write(180);myservoRightArm.write(0);
delay(300);
myservoLeftArm.detach();myservoRightArm.detach();}
void setup() {
pinMode(12,INPUT);
NinjaHome();
}
void loop() {
if (digitalRead(12)) {
NinjaSetWalk();
} else {
NinjaSetRoll();
}
}
|
沒有留言:
張貼留言