Не получается инвертировать вращение шагового двигателя

fedonkin

✩✩✩✩✩✩✩
7 Апр 2022
1
0
Всем привет. Пытаюсь инвертировать вращение через концевики, но это не работает...
И второй вопрос. Когда я вызываю brake() через кнопку, то движок не тормозится, а прерывисто дергается туда сюда. пробовал c disable(), но ничего не изменилось.
Что я делаю не так?:cry:

C++:
// установка скорости потенциометром

#include <GyverStepper.h>

GStepper<STEPPER2WIRE> stepper(200, 54, 55,38);

void setup() {
 
  pinMode(11, INPUT);//жесткая остановка при true, false-вращение
  pinMode(3, INPUT_PULLUP); концевик 1
  pinMode(14, INPUT_PULLUP); концевик 2
  brakemotor = digitalRead(11);
  end1 =  digitalRead(3);
  end2 =  digitalRead(14);
  stepper.setRunMode(KEEP_SPEED); // режим поддержания скорости
  stepper.setSpeedDeg(50);        // в градусах/сек
}

void loop() {
  stepper.tick();

  // сделаем таймер на 50 мс и будем опрашивать потенциометр
  // менять скорость чаще нет смысла
  static uint32_t tmr2;
  if (millis() - tmr2 > 50) {
    tmr2 = millis();

    stepper.setSpeed(analogRead(14));
  }
  if(end1==true){
    stepper.reverse(true);
  }
  if(end2==true){
    stepper.reverse(false);
  }
  if(brakemotor==true){
    stepper.brake();
  } 
}
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,272
1,303
Москва
Переменная brakemotor никогда не меняется после 1-ой инициации в setup, соотв 12 ую строку надо скопировать в цикл loop
stepper.reverse работает как то странно (на мой взгляд, по памяти) Возможно надо всегда указывать true (или false), точно не помню, я забил на библиотеки.