Подключение шагового двигателя 28BYJ-48-5V к Arduino драйвер ШД ULN2003 CustomStepper.h

Цель задания: заставить вращаться шаговый двигатель 28BYJ-48-5V  при нажатии на кнопку 1 по часовой стрелке, при нажатии на кнопку 2 против часовой стрелки.

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

Схема подключения ШД  и драйвера к Ардуино

stepper28BYJ48 driverULN2003 2knopki vlevo vpravo.fw

Скетч подключения шагового двигателя 28BYJ-48-5V к Arduino

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

/*Вращение ШД по часовой/против часовой от нажатия 2х кнопок http://www.muuh.ru/shagovye-dvigateli/313-podklyuchenie-shagovogo-dvigatelya-28byj-48-5v-k-arduino-drajver-shd-uln2003-customstepper-h.html*/

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

int buttonState1 = 0;
int buttonState2 = 0;

int i1 = 0;
int i2 = 0;
int t1 = 4; //Скорость вращения (задержка переключения фаз(мс)), чем > значение, тем медленнее вращается ШД при 2мс 14/обмин, при 4мс - 7об/мин

void setup()
  {
    //8, 9, 10, 11 контакты драйвера ШД
    pinMode(8, OUTPUT);
    pinMode(9, OUTPUT);
    pinMode(10, OUTPUT);
    pinMode(11, OUTPUT);
   
    // назначение контактов кнопок
    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 stopPins() //Функция остановки ШД
{
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);  
  delay(500);
}

void loop()
{
  buttonState1 = digitalRead(buttonA0);
  if (buttonState1 == LOW) {
    while (i1 < 1) { //Вращения мотора в одну сторону, пока нажата кнопка
      digitalWrite(11, HIGH); digitalWrite(9, LOW); delay(t1);
      digitalWrite(10, HIGH); digitalWrite(8, LOW); delay(t1);
      digitalWrite(9, HIGH); digitalWrite(11, LOW); delay(t1);
      digitalWrite(8, HIGH); digitalWrite(10, LOW); delay(t1);
      i1++; prodlit();
    } i1 = 0; stopPins();
  }
 
  buttonState2 = digitalRead(buttonA3);
  if (buttonState2 == LOW) {
    while (i2 < 1) { //Вращения мотора в другую сторону, пока нажата кнопка
      digitalWrite(8, HIGH); digitalWrite(10, LOW); delay(t1);
      digitalWrite(9, HIGH); digitalWrite(11, LOW); delay(t1);
      digitalWrite(10, HIGH); digitalWrite(8, LOW); delay(t1);
      digitalWrite(11, HIGH); digitalWrite(9, LOW); delay(t1);
      i2++; prodlit();
    } i2 = 0; stopPins();
  }
}

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

Скачать скетч управления ШД >>>

You have no rights to post comments