Arduino находит самый быстрый маршрут через библиотеку accelstepper - PullRequest
0 голосов
/ 07 марта 2019

добрый день,

Я новичок в программировании на Arduino, и сейчас я работаю над новым домашним проектом, в котором у вас есть шкаф, вращающийся через 2 шаговых двигателя, который выглядит примерно так: полка

Но теперь я работаю над небольшой проблемой, я использую библиотеку 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();
      }     
    }
}

Я надеюсь, что кто-то сможетпомоги мне

...