Вращение шагового двигателя вправо влево от нажатия кнопок с ускорением Arduino

Цель: Заставить вращаться биполярный шаговый двигатель по часовой и против часовой стрелки при нажатии одной или другой кнопки. Управление из Arduino

Материалы и компоненты:

 

Программа (скетч) управления шаговым двигателем двухполярным 28BYJ-48 5В

********************************************************************

// Подключаем библиотеку AccelStepper
#include <AccelStepper.h>

// Устанавливаем выводы
const int dirPin = 2;
const int stepPin = 3;

//Кнопки
const int buttonA0 = 14; //14 контакт он же А0
const int buttonA3 = 17; //17 контакт он же А3

int buttonState1 = 0;
int buttonState2 = 0;

int i1 = 0;
int i2 = 0;

// Определение типа интерфейса двигателя
#define motorInterfaceType 1
// Создаем экземпляр
AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);

void setup()
{
  // Устанавливаем максимальную скорость, коэффициент ускорения,
  // начальную скорость и целевую позицию
  myStepper.setMaxSpeed(1000);
  myStepper.setAcceleration(30);
  myStepper.setSpeed(800);
 
  // назначение контактов кнопок
  pinMode(A0, INPUT_PULLUP); //А0 кнопка на GND
  pinMode(A3, INPUT_PULLUP); //А3 кнопка на GND
}
 
// функция продления
void prodlit()
  {
    buttonState1 = digitalRead(buttonA0); //чтение состояния кнопки на пине A0
    buttonState2 = digitalRead(buttonA3); //чтение состояния кнопки на пине A3
   
    if (buttonState1 == LOW)
      {
        i1--; //декремент i1
      }
   
    if (buttonState2 == LOW)
      {
        i2--; //декремент i2
      }
  }


void loop()
{
  // Изменение направления вращения, при нажатии одной из кнопок

 buttonState1 = digitalRead(buttonA0);
  if (buttonState1 == LOW) {
    while (i1 < 1) { //Вращения мотора в одну сторону, пока нажата кнопка с ускорением
     myStepper.move(1000); // Переместиться в относительно указанное положение
     myStepper.run(); //Старт шагового двигателя с ускорением
      i1++;
      prodlit();
    }
    i1 = 0;
    myStepper.stop(); //Немедленная остановка шагового двигателя
  }
myStepper.setCurrentPosition (1); //Обнуление текущей позиции

  buttonState2 = digitalRead(buttonA3);
  if (buttonState2 == LOW) {
    while (i2 < 1) { //Вращения мотора в другую сторону, пока нажата кнопка с ускорением
     myStepper.move(-1000); // Переместиться в относительно указанное положение
     myStepper.run(); //Старт шагового двигателя с ускорением
      i2++;
      prodlit();
    }
    i2 = 0;
    myStepper.stop(); //Немедленная остановка шагового двигателя
  }
myStepper.setCurrentPosition (1);  //Обнуление текущей позиции
}
 
********************************************************************

You have no rights to post comments