Управление шаговым мотором по концевику

artcom5
Offline
Зарегистрирован: 14.09.2016

Здравствуйте форумчане!

Помогите пожалуйста начинающему, задача такая: управление шаговиком по концевику плата Уно.

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

#include<AccelStepper.h>
 
AccelStepper stepper1(4, 2, 3, 4, 5); //Мотор М1 оси Z

const int BUTTONSTART = 12; // концевик оси Z на 12 pin
boolean lastButtonStart = LOW; // Значение предыдущий статус кнопки
boolean currentButtonStart = LOW; // Значение текушего статуса кнопки

 void setup()
   {
   stepper1.setMaxSpeed(106700);  // Задаём максимальную скорость M1 двигателя
   pinMode (BUTTON1, INPUT);
   }

   
 boolean debounce(boolean last)
{
  boolean current = digitalRead(BUTTONSTART);
  if (last != current)
  {
    delay(5);
    current = digitalRead(BUTTONSTART);
    return current;
  }
}


 void loop()
{
      currentButtonStart = debounce(lastButtonStart);
      if (lastButtonStart == LOW && currentButtonStart == HIGH)
      {
      stepper1.setSpeed(106700);
      stepper1.runSpeed();
      }
      Вот дальше не могу
}

 

artcom5
Offline
Зарегистрирован: 14.09.2016

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

artcom5
Offline
Зарегистрирован: 14.09.2016

Так тоже работает но нет так как надо:

 

#include<AccelStepper.h>
 
AccelStepper stepper1(4, 2, 3, 4, 5); //Мотор М1 оси Z

const int BUTTONSTART = 12; // концевик оси Z на 12 pin
boolean lastButtonStart = LOW; // Значение предыдущий статус кнопки
boolean currentButtonStart = LOW; // Значение текушего статуса кнопки
int a;
 void setup()

   {
   stepper1.setMaxSpeed(106700);  // Задаём максимальную скорость M1 двигателя
   pinMode (BUTTONSTART, INPUT);
   }

   
// boolean debounce(boolean last)
//{
//  boolean current = digitalRead(BUTTONSTART);
//  if (last != current)
//  {
//   delay(5);
//    current = digitalRead(BUTTONSTART);
//    return current;
//  }
//}


 void loop()
{
    currentButtonStart = digitalRead(BUTTONSTART); // считываем состояния кнопки
    
    if (currentButtonStart == HIGH)  // если нажата то запускаем мотор
      {
          stepper1.setSpeed(106700);
          stepper1.runSpeed();
          currentButtonStart = lastButtonStart; // меняем значение кнопки на LOW
      }
      if (currentButtonStart == HIGH && lastButtonStart == LOW)
      {
        digitalRead(BUTTONSTART) == HIGH;
        stepper1.setMaxSpeed(0);
        stepper1.setSpeed(0);
        
      }
      
      }
       
 //       while (lastButtonStart == HIGH);
//      {
//        stepper1.setMaxSpeed(0);
//        stepper1.setSpeed(0);
        
 //       }
//      }

 

vvadim
Offline
Зарегистрирован: 23.05.2012

вы бы сначала с примерами библиотеки поигрались, да и на сайте описание самой библиотеки почитать не плохо

пока у вас каша