下面这段Arduino代码可以用的前提条件是,你用的步进电机的驱动器只需要你给定速度(脉冲时间间隔)和方向即可(推荐用这种驱动器),不需要你具体地指定A+,A-,B+,B-四根线分别是高电平还是低电平(这种驱动器真TM难用)。
//转角θ=-ANcos(wt),转速V=ANwsin(wt)
float w=3;
int N=100; //N是半个周期的脉冲数,正比于正弦函数的振幅
//如果乘积Nw太大,步进电机就会丢步
float dt[400]={0}; //脉冲的时间间隔
int k;
const byte pinSPEED=5;
const byte pinDIREC=6;
void setup() {
pinMode(pinSPEED,OUTPUT); // 5号引脚发送PULSE(控制速度)
pinMode(pinDIREC,OUTPUT); // 6号引脚指定SIGN (控制方向)
int dtMAX=30;
float t=0;
for(k=1;k<=N;k++)
{dt[k]=(1.0F/sin(k*PI/(N+1))> dtMAX ? dtMAX : 1.0F/sin(k*PI/(N+1)));
//如果两个脉冲的时间间隔超过预设的dtMAX,就认为它是dtMAX
//dtMAX的值可以根据需要自行修改
t=t+dt[k];}
//for循环结束后,t代表数组dt的前N项的和
for(k=1;k<=N;k++)
{dt[k]=PI*dt[k]/(w*t);}
}
void loop() {
digitalWrite(pinDIRE