如何使步进电机随时间转动360度?

时间:2016-06-14 17:56:36

标签: javascript arduino degrees 360-degrees actuator

我有这个代码用Espruino在Javascript中控制我的steppermotor。

function motorStep(mySteps){
  var stepperPins = [C6,C7,C8,C9]; // Change these to your pins (digital output)
  var stepBits = [0b0110,0b0101,0b1001,0b1010];

  if (mySteps<0) //reverse
  {
    stepBits.reverse();
    mySteps = -mySteps;
  }

  for (i=0; i< mySteps ; i++)
  {
    digitalWrite(stepperPins, stepBits[i % stepBits.length]);
    //then we need to wait before sending next command
    wait(1); //some motors might need a longer delay
  }

}

function wait(ms){
  var d = new Date();
  var d2 = null;
  do { d2 = new Date(); }
  while(d2-d < ms);
}

我已经创建了一个setWatch函数来查找按钮然后启动一个函数

setWatch(function () {
action goes here
}, BTN2, {
 repeat : true,
 edge : "rising"
});

我正在寻找步进电机在6分钟内完成360转。对于步进器进行360度全转,它是350步,所以每步之间等待1030ms(360000/350?)。因此,当我按下BTN2时,步进器在6分钟的时间跨度内旋转360度。

我不确定如何将两者结合起来,你们中的任何人都可以帮助我吗?

如果我这样做:

setWatch(function () {
motorStep(350);
}, BTN2, {
 repeat : true,
 edge : "rising"
});

我如何编写执行完整操作所需的时间?

1 个答案:

答案 0 :(得分:1)

更改您的motortep功能以进行额外的论证:

function motorStep(mySteps, delay){
  var stepperPins = [C6,C7,C8,C9]; // Change these to your pins (digital output)
  var stepBits = [0b0110,0b0101,0b1001,0b1010];

  if (mySteps<0) //reverse
  {
    stepBits.reverse();
    mySteps = -mySteps;
  }

  for (i=0; i< mySteps ; i++)
  {
    digitalWrite(stepperPins, stepBits[i % stepBits.length]);
    //then we need to wait before sending next command
    wait(delay); //some motors might need a longer delay
  }

}

并按如下方式调用:

motorStep(350, 360000L/350) ;

我手头没有espruino,所以我只能希望这有效。