Проблема с попыткой повернуть шаговый двигатель при нажатой кнопке

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

Чтобы бороться с этим, я хочу иметь резервный код, который просто вращает шаговый двигатель, пока кнопка удерживается нажатой. это позволит мне вручную сбросить барабан в правильное положение, если вопросы сместятся. Однако я не достиг этого и надеялся, что кто-то сможет определить, где проблемы в моем коде?

#include <Stepper.h>

#define STEPS 2048

Stepper myStepper(STEPS, 8, 10, 9, 11);

const int  buttonPinBlue = 6;

void setup() {

  myStepper.setSpeed(5);
}

void stepp() {

 myStepper.step(1);

  pinMode(buttonPinBlue, INPUT);
}

void loop() {

 if (buttonPinBlue == HIGH) {

  Serial.print("pin is high");

   stepp();
  }

}

Также в качестве примечания: шаговый двигатель работает нормально, используя значение «определить шаги» и скорость, которую я установил здесь, проблема, похоже, заключается в том, что нажатие кнопки не обнаруживается

, 👍1


1 ответ


Лучший ответ:

0

Вы не устанавливаете сам пин:

Изменить

if (buttonPinBlue == HIGH) {

в

if (digitalRead(buttonPinBlue) == HIGH) {

Также не нужно каждый раз устанавливать пин, достаточно один раз: в функции setup должна быть следующая строка (и ее можно убрать из функции stepp :

pinMode(buttonPinBlue, INPUT);

Обратите внимание, что если вы хотите использовать "щелчок" для перехода к следующему элементу, вы должны устранить дребезг кнопки; на сайте Arduino проверьте устранение дребезга кнопок: https://www.arduino.cc/en/Tutorial/Debounce

,

Аааа, разобрался, должен был знать это на самом деле. Спасибо за вашу помощь!, @Rossage1

Я также немного выровнял ваш код (в следующий раз выделите его и нажмите ctrl-k), чтобы сделать его лучше, уберите пустые строки и выровняйте код получше., @Michel Keijzers

Пожалуйста (если это правильное решение, проголосуйте и примите ответ). Добро пожаловать в стековый обмен Arduino., @Michel Keijzers

@KingDuken Правда, вероятно, если он увидит, что мотор работает, у него есть отправная точка, как действовать дальше., @Michel Keijzers