调试程序,运行调试程序,舵机会移动两只悬臂分别停留在一只水平另一只垂直的位置上。如果差距非常大,可拆下悬臂调节,如果比较接近了,就修改程序第3~6行的四个参数 SERVOFAKTORLEFT 左悬臂垂直位置,SERVOFAKTORRIGHT 右悬臂垂直位置,SERVOLEFTNULL 左悬臂180度位置,SERVORIGHTNULL 右悬臂0度位置(右侧为0度,逆时针画圆),参数增加摆臂逆时针转动,一般增幅50,才能看到比较明显的变化。
调节参数,直到摆臂停在下图的标准位置上为止。
![](http://www.arduino.cn/data/attachment/forum/201406/05/233001mrvko9jkklxkox0i.jpg)
LIFT0、1、2参数原理相同调试方法略过
调节参数,直到摆臂停在下图的标准位置上为止。
![](http://www.arduino.cn/data/attachment/forum/201406/05/233001mrvko9jkklxkox0i.jpg)
LIFT0、1、2参数原理相同调试方法略过
《调试摆臂用代码》
//左右悬臂舵机的90度位置
#define SERVOFAKTORLEFT 550
#define SERVOFAKTORRIGHT 630 //此参数650是理论中间位置,需要看实际情况调节
//左右悬臂舵机的 0或180度位置
#define SERVOLEFTNULL 1750
#define SERVORIGHTNULL 880
//三只舵机的接口
#define SERVOPINLIFT 2
#define SERVOPINLEFT 3
#define SERVOPINRIGHT 4
//升举舵机的3个角度
#define LIFT0 1080 // on dr<span style="font-size:12px;">awing surface 写的时候
#define LIFT1 925 // between numbers 字之间
#define LIFT2 725 // going towards sweeper 去笔擦高度</span>
// 速度
#define LIFTSPEED 1500
// 悬臂的长度,根据图纸测量,无需改变
#define L1 35
#define L2 57.2
#define L3 14.2
// 左右舵机轴心的位置
#define O1X 23
#define O1Y -25
#define O2X 49
#define O2Y -25
#include <Time.h> // see [url=http://playground.arduino.cc/Code/time]http://playground.arduino.cc/Code/time[/url]
#include <Servo.h>
int servoLift = 1500;
Servo servo1; // Servo 类 声明
Servo servo2; //
Servo servo3; //
volatile double lastX = 75;
volatile double lastY = 47.5;
int last_min = 0;
void setup()
{
// Set current time only the first to values, hh,mm are needed
setTime(19,38,0,0,0,0);
drawTo(38, 24);
lift(0);
servo1.attach(SERVOPINLIFT); // lifting servo
servo2.attach(SERVOPINLEFT); // left servo
servo3.attach(SERVOPINRIGHT); // right servo
delay(1000);
}
void loop()
{
// 移动左右悬臂,让两只悬臂分别停留在水平和垂直的位置上。 通过修改 SERVOFAKTORLEFT , SERVOFAKTORRIGHT, SERVOLEFTNULL , SERVORIGHTNULL 四个参数来微调
drawTo(-3, 29.2);
delay(500);
drawTo(74.1, 28);
delay(500);
}
// Writing numeral with bx by being the bottom left originpoint. Scale 1 equals a 20 mm high font.
// The structure follows this principle: move to first startpoint of the numeral, lift down, draw numeral, lift up
void number(float bx, float by, int num, float scale) {
switch (num) {
case 0:
drawTo(bx + 12 * scale, by + 6 * scale);
lift(0);
bogenGZS(bx + 7 * scale, by + 10 * scale, 10 * scale, -0.8, 6.7, 0.5);
lift(1);
break;
case 1:
drawTo(bx + 3 * scale, by + 15 * scale);
lift(0);
drawTo(bx + 10 * scale, by + 20 * scale);
drawTo(bx + 10 * scale, by + 0 * scale);
lift(1);
break;
case 2:
drawTo(bx + 2 * scale, by + 12 * scale);
lift(0);
bogenUZS(bx + 8 * scale, by + 14 * scale, 6 * scale, 3, -0.8, 1);
drawTo(bx + 1 * scale, by + 0 * scale);
drawTo(bx + 12 * scale, by + 0 * scale);
lift(1);
break;
case 3:
drawTo(bx + 2 * scale, by + 17 * scale);
lift(0);
bogenUZS(bx + 5 * scale, by + 15 * scale, 5 * scale, 3, -2, 1);
bogenUZS(bx + 5 * scale, by + 5 * scale, 5 * scale, 1.57, -3, 1);
lift(1);
break;
case 4:
drawTo(bx + 10 * scale, by + 0 * scale);
lift(0);
drawTo(bx + 10 * scale, by + 20 * scale);
drawTo(bx + 2 * scale, by + 6 * scale);
drawTo(bx + 12 * scale, by + 6 * scale);
lift(1);
break;
case 5:
drawTo(bx + 2 * scale, by + 5 * scale);
lift(0);
bogenGZS(bx + 5 * scale, by + 6 * scale, 6 * scale, -2.5, 2,