Работа с ШД через библиотеки, что делаю не правильно

Доброе время суток всем.

программированием никогда не занимался . лет 20 назад в школе паскаль изучал… а тут под старость появилась необходимость.
около 2-3 недель по урокам из интернета изучал программирование ардуино. так что о коде не судите строго - как понял - так написал…
нужно разобраться непосредственно с режимом ТАРГЕТ
ниже скетч - по сути движение ШД по нему меня устраивает, но как обычно есть проблемма…
при подаче питания и загрузке контролера в этом скетче таргетирование происходит по заранее установленным на потенциометрах V и U
если я правильно понимаю , когда я этот скетч вставлю в мой большой скетч, то что бы изменить угол и скорость - мне нужно будет сначала выйти из режима ТАРГЕТ затем покрутить потенциометры и снова войти в режим …
а вот как изменить скетч режима ТАРГЕТ (скетч в этом посте) что бы скорость и угол можно было менять “на горячую” т.е. ШД двигается туда сюда -мы крутим потенциометры и он юзается уже с другой скоростью и углом…
честно - моих скудных трехнедельных познаний сдесь не хватает… даже и не знаю в каком направлении копать…

* ШД крутится туда сюда со скоростью   speed
*                          на угол     tar

УГОЛ И СКОРОСТЬ можно установить потенциометрами POT_V  и POT_U
*/
#define DRIVER_STEP_TIME 1  // меняем задержку на 1 мкс для драйвера ШД
#define PIN_POT_V     A5    // дефайним пин потенциометра для СКОРОСТЬ
#define PIN_POT_U     A4    // дефайним пин потенциометра для УГОЛ ТАРГЕТИРОВАНИЯ

#include <GyverStepper.h>
//GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
GStepper<STEPPER2WIRE> stepper(800, 8, 9, 10);

float speed;
uint32_t tar;

void setup() {

//----------потенциометры скорости V, угла таргетирования U----------

  pinMode(PIN_POT_V, INPUT);       // определяем  пин пот. скорости как ВЫХОД (подключение левый пин VCC, средний пин - А5, правый пин GND)
  pinMode(PIN_POT_U, INPUT);       // определяем  пин пот. угла ВЫХОД (подключение левый пин VCC, средний пин - А4, правый пин GND)
 
//-------------------------------------------------------------------

speed = map(analogRead(PIN_POT_V), 0, 1023, 100, 6000);    //определяем диапазоны  потенцтометра скорости  в  шаг/сек
tar = map(analogRead(PIN_POT_U), 0, 1023, 100, 800);    //определяем диапазоны  пот. угла в  шагах  (в описании градусы но мне удобнее шаги)

// режим следования к целевй позиции
  stepper.setRunMode(FOLLOW_POS);

// установка макс. скорости в шагах/сек
  stepper.setMaxSpeed(speed);
 
// установка ускорения в шагах/сек/сек
  stepper.setAcceleration(500);
}
void loop() {
  
// просто крутим туды-сюды
  if (!stepper.tick()) {
    stepper.brake();
    static bool dir;
    dir = !dir;
    stepper.setTarget(dir ? -tar : tar);
  }
 
}

Пожалуйста, уберите жирный и крупный шрифт в сообщении, а то такое впечатление, что вы кричите.
Спасибо за правильное добавление кода в сообщение.

Значит нужно написать скетч так, чтобы потенциометры опрашивались не один раз, а постоянно. Изменение скорости и всего другого делать только при изменении значений с элементов управления.

А Вы что, в возрасте 60 лет еще в школе учились?

1 лайк

Неужели за 3 недели Вы так и не уяснили, что весь код, который находится в функции setup() - выполняется только один раз, а код, находящийся в функции loop() - постоянно???!!!

Дак старость же, пока про loop() читал, про setup() забыл. И наоборот.

2 лайка

А вот так - тоже никак? ))

В школе - это до 17-ти. Плюс 20 - это до 37. Рано же у Вас старость наступила.

1 лайк

Так не наступила же еще )) Он же пишет “под старость”, то есть опережая ее …

Вот как счас помню, как 40 лет назад таскал листы девочкам (это они сейчас для меня девочки), чтобы быстрее программку перенесли на перфокарты. Иногда и с шоколадкой.

Увожаемый адриано, по мойму флуд не в этой ветке форума )

Вы всё делаете неправильно и с неправильными библиотеками.
Шаговый двигатель без библиотек очень просто 1,2,3 или 3,2,1 бывает 1,2,3,4 в обратку - 4,3,2,1
И не пользуйтесь ЭТОйЙ библиотекой - она косячная.