因為現在的電池重量關係 , 及重心偏移了 , 另到機械腳動作不平衡 , 唯一解決方法是重做
主板及 Mounting , 以及更換更輕的電池 , 而且 S3003 的表現也不太理想 , 現在可以見到每當
完成一個動作後 , S3003 會因主體的重量另到有部份關節出現回振現像 , 情形就好似射箭時一樣 ,
當箭發出去後 , 弓的弦線還在振一樣 , 要解決想信要用大力及慢一點的 Servo ,
現在 Program 的 source code :
// First Leg test of TK01
// Action: Standup Only
// by Blood Keith 24 Feb 2007
#define SERVO_START 0 // first servo pin
#define SERVO_END 20 // last servo pin
int i,speed; // Varibles
//int Pos[21];
main()
{
writes(“9600″, 500);
// sys(0, 0); // select COM port 0
sys(0, 0); // select COM port 0
setcomm(9600);
delay(2000);
set_allspeed(1);
loop
{
servo_func1();
delay(4000);
servo_func2();
delay(4000);
servo_func3();
delay(4000);
servo_func4();
delay(4000);
}
}
set_allspeed(speed)
{
for(i=SERVO_START; i <= SERVO_END; i++)
{
writec(232, 250, 1);
writec(232, i, 0);
writec(232, speed, 0);
}
}
servo_func1() // Position shift left
{
writec(232, 1, 0); writec(232, 81, 0); // Servo 1
writec(232, 2, 0); writec(232, 58, 0); // Servo 2
writec(232, 3, 0); writec(232, 90, 0); // Servo 3
writec(232, 4, 0); writec(232, 48, 0); // Servo 4
writec(232, 5, 0); writec(232, 29, 0); // Servo 5
writec(232, 6, 0); writec(232, 78, 0); // Servo 6
writec(232, 15, 0); writec(232, 79, 0); // Servo 15
writec(232, 16, 0); writec(232, 123, 0); // Servo 16
writec(232, 17, 0); writec(232, 95, 0); // Servo 17
writec(232, 18, 0); writec(232, 75, 0); // Servo 18
writec(232, 19, 0); writec(232, 107, 0); // Servo 19
writec(232, 20, 0); writec(232, 62, 0); // Servo 20
}
servo_func2() // Position stand center
{
writec(232, 1, 0); writec(232, 83, 0); // Servo 1
writec(232, 2, 0); writec(232, 50, 0); // Servo 2
writec(232, 3, 0); writec(232, 90, 0); // Servo 3
writec(232, 4, 0); writec(232, 48, 0); // Servo 4
writec(232, 5, 0); writec(232, 29, 0); // Servo 5
writec(232, 6, 0); writec(232, 88, 0); // Servo 6
writec(232, 15, 0); writec(232, 89, 0); // Servo 15
writec(232, 16, 0); writec(232, 123, 0); // Servo 16
writec(232, 17, 0); writec(232, 95, 0); // Servo 17
writec(232, 18, 0); writec(232, 75, 0); // Servo 18
writec(232, 19, 0); writec(232, 107, 0); // Servo 19
writec(232, 20, 0); writec(232, 66, 0); // Servo 20
}
servo_func3() // Position shift right
{
writec(232, 1, 0); writec(232, 79, 0); // Servo 1
writec(232, 2, 0); writec(232, 50, 0); // Servo 2
writec(232, 3, 0); writec(232, 90, 0); // Servo 3
writec(232, 4, 0); writec(232, 48, 0); // Servo 4
writec(232, 5, 0); writec(232, 29, 0); // Servo 5
writec(232, 6, 0); writec(232, 98, 0); // Servo 6
writec(232, 15, 0); writec(232, 99, 0); // Servo 15
writec(232, 16, 0); writec(232, 123, 0); // Servo 16
writec(232, 17, 0); writec(232, 95, 0); // Servo 17
writec(232, 18, 0); writec(232, 75, 0); // Servo 18
writec(232, 19, 0); writec(232, 99, 0); // Servo 19
writec(232, 20, 0); writec(232, 62, 0); // Servo 20
}
servo_func4() // Position stand center
{
writec(232, 1, 0); writec(232, 83, 0); // Servo 1
writec(232, 2, 0); writec(232, 50, 0); // Servo 2
writec(232, 3, 0); writec(232, 90, 0); // Servo 3
writec(232, 4, 0); writec(232, 48, 0); // Servo 4
writec(232, 5, 0); writec(232, 29, 0); // Servo 5
writec(232, 6, 0); writec(232, 88, 0); // Servo 6
writec(232, 15, 0); writec(232, 89, 0); // Servo 15
writec(232, 16, 0); writec(232, 123, 0); // Servo 16
writec(232, 17, 0); writec(232, 95, 0); // Servo 17
writec(232, 18, 0); writec(232, 75, 0); // Servo 18
writec(232, 19, 0); writec(232, 107, 0); // Servo 19
writec(232, 20, 0); writec(232, 66, 0); // Servo 20
}