Arduino通过accelstepper库找到最快的路线

时间:2019-03-07 19:17:04

标签: arduino stepper

美好的一天,

我对使用Arduino编程很陌生,现在我正在一个新的家庭项目中,您的衣橱里有2个步进电机,它们看起来像这样:the shelf

但是现在我遇到了一个小问题,我正在使用accelstepper库,因为我可以设置步进电机的位置,这确实运行良好,但是正在发生的情况是,这可以说您当前的位置是架子1,而您想转到6号架子,它的作用是:(架子1,2,3,4,5,6)执行5个步骤, 相反,我想要的是:(架子1,6)只需走1步,所以我的问题是我不知道如何执行此操作。

这是我的代码:

//for now i will use only 1 stepper motor
//and I'm sorry if my code looks absolute garbage
#include <AccelStepper.h>
AccelStepper stepperN(1, 9, 8); // pin 9 = step, pin 8 = direction
//the position from the shelfs
int shelf1 =0;
int shelf2 =1000;
int shelf3 =2000;
int shelf4 =3000;
int shelf5 =4000;
int shelf6 =5000;

void setup() {
 Serial.begin(9600); 
 Serial.println("type shelf1/6 ");
}

void loop() {
stepperN.run();
 while(Serial.available() > 0 ){
    String str = Serial.readString();
    if(str.indexOf("shelf1") > -1){
      stepperN.setAcceleration(50); stepperN.setMaxSpeed(313); stepperN.moveTo(shelf1);  stepperN.run();
      } 
      else if(str.indexOf("shelf2") > -1){
      stepperN.setAcceleration(50); stepperN.setMaxSpeed(313); stepperN.moveTo(shelf2);  stepperN.run();
      } 
      else if(str.indexOf("shelf3") > -1){
      stepperN.setAcceleration(50); stepperN.setMaxSpeed(313); stepperN.moveTo(shelf3);  stepperN.run();
      } 
      else if(str.indexOf("shelf4") > -1){
      stepperN.setAcceleration(50); stepperN.setMaxSpeed(313); stepperN.moveTo(shelf4);  stepperN.run();
      } 
      else if(str.indexOf("shelf5") > -1){
      stepperN.setAcceleration(50); stepperN.setMaxSpeed(313); stepperN.moveTo(shelf5);  stepperN.run();
      } 
      else if(str.indexOf("shelf6") > -1){
      stepperN.setAcceleration(50); stepperN.setMaxSpeed(313); stepperN.moveTo(shelf6);  stepperN.run();
      }     
    }
}

我希望有人能够帮助我

0 个答案:

没有答案