добрый день,
Я новичок в программировании на 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();
}
}
}
Я надеюсь, что кто-то сможетпомоги мне