skycn98011 发表于 2013-10-14 18:23:05

求大家帮忙看一段easydriver步进控制的程序

需要功能:当按键BUTTON_ZERO 6为按下时,步进电机运行,直到零点开关为1,


怎么我写的程序有问题吗?怎么多不执行。。





#define DIR_PIN 3      //定义脚2为方向控制,名称为DIR_PIN
#define STEP_PIN 5   //定义脚3为步进控制,名称为STEP_PIN

#define BUTTON_ZERO 6//定义脚6为回零按钮信号,名称为ZERO_PIN 9
#define ZERO_PIN 9   //定义脚5为零点信号,名称为ZERO_PIN 9


void setup() {
pinMode(DIR_PIN,OUTPUT);
pinMode(STEP_PIN,OUTPUT);
pinMode(BUTTON_ZERO,INPUT);
pinMode(ZERO_PIN,INPUT);
}

void loop(){


if(BUTTON_ZERO==HIGH)
{
do{
    zero(0.5);
      }
      while(ZERO_PIN==HIGH);
}

}

void zero(float speed)//速度为0.01到1的任意数,最快速度为1
{
    digitalWrite(DIR_PIN,1);   //
   
    float usDelay = (1/speed) * 70;    //(定义等待时间为(1/speed) * 70实数)
   
    digitalWrite(STEP_PIN, HIGH);
   
    delayMicroseconds(usDelay);

    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(usDelay);
   
}

skycn98011 发表于 2013-10-14 18:23:50

void loop()
{
      zero(0.5);   
}

如果执行和一段电机是运行的。

skycn98011 发表于 2013-10-14 18:44:32

为毛这个程序也没有加速度呀???



#define DIR_PIN 3      //定义脚2为方向控制,名称为DIR_PIN
#define STEP_PIN 5   //定义脚3为步进控制,名称为STEP_PIN

#define BUTTON_ZERO 6//定义脚6为回零按钮信号,名称为ZERO_PIN 9
#define ZERO_PIN 9   //定义脚5为零点信号,名称为ZERO_PIN 9

int speed=0;
void setup() {
pinMode(DIR_PIN,OUTPUT);
pinMode(STEP_PIN,OUTPUT);
pinMode(BUTTON_ZERO,INPUT);
pinMode(ZERO_PIN,INPUT);
}

void loop()
{

zero(0.01,0.5);

}

void zero(float speedMIN,float speedMAX)//速度为0.01到1的任意数,最快速度为1
{
    digitalWrite(DIR_PIN,1);   //
   
    speed=speedMIN+0.01;
   
   if(speed>=speedMAX)
   {
   speed=speedMAX;
   }
    float usDelay = (1/speed) * 70;    //(定义等待时间为(1/speed) * 70实数)
   
    digitalWrite(STEP_PIN, HIGH);
   
    delayMicroseconds(usDelay);

    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(usDelay);
   
}

friskit 发表于 2013-10-14 23:47:27

想要加速度一般都用库。。。或者自己写加速度。。。对于低速的雕刻机来说。。。加速度不重要。。。保证每一个脉冲都被执行了不丢步才重要。。。
关于这段程序。。。同学你的开关加上拉电阻了么……

skycn98011 发表于 2013-10-15 09:48:42

没有加呀,省事。不过估计加了也没有毛用吧。不可能给了5V不是5V吧。

skycn98011 发表于 2013-10-16 09:16:20

有人帮我解答一下吗?》谢谢。

liweisgg 发表于 2014-12-21 15:57:33

void setup() {
pinMode(DIR_PIN,OUTPUT);
pinMode(STEP_PIN,OUTPUT);
pinMode(BUTTON_ZERO,INPUT);
pinMode(ZERO_PIN,INPUT);
}
没有串口通信速率,你的程序编译不过吧
页: [1]
查看完整版本: 求大家帮忙看一段easydriver步进控制的程序