Здравствуйте!
У меня такая проблема: Хочу по нажатию тактовой кнопки, чтобы шаговик обработал движение по траектории ( все сделано на основе примера из библиотеки Gplanner) которая указана в newTarget ( получается две точки). Сейчас реакции на код нет никакой. Нажимаю на move_left , test получает значение 1, но условие для следующего if как будто не рабочее.
Пробовал без этого test. Нажимаешь кнопку - проходит только к первой точке , нажимаешь еще раз - ко второй. Хочется, чтобы отработало в автомате и , например, 3 раза подряд ( от второй точки возвращаемся к первой и по новой). Пожалуйста подскажите, что не так
#include <EncButton.h>
#include "GyverPlanner.h"
Stepper<STEPPER2WIRE> stepper1(8, 7);
GPlanner<STEPPER2WIRE, 1> planner;
Button switch_mode(0);
Button move_left(2);
Button move_right(6);
void setup() {
Serial.begin(115200);
planner.addStepper(0, stepper1); // ось 0
planner.setMaxSpeed(1000);
planner.reset(); // сбрасываем все позиции в 0 (они и так в 0 при запуске)
}
byte count = 0;
byte test=0;
int32_t newTarget[][2] = {
{10},
{100},
};
void loop() {
// здесь происходит движение моторов, вызывать как можно чаще
planner.tick();
move_left.tick();
switch_mode.tick();
// вернёт true, если все моторы доехали
if (move_left.click()) {if (++test >= 2) test= 0;
if (planner.ready() && test==1) {
planner.setTarget(newTarget[count]);
if (++count >= sizeof(newTarget)/8) count=0 ;
}
}
// асинхронно вывожу в порт графики
static uint32_t tmr;
if (millis() - tmr >= 20) {
tmr = millis();
Serial.print(stepper1.pos);
Serial.print(',');
// Serial.print(test);
}
}