Остановка ШД в SETUP по сигналу

Kalyava
Offline
Зарегистрирован: 13.07.2017

Приветсвую!

У меня прикладная задача. Всю механику собрал. Приводами подёргал - всё ok. Опыта чуть больше чем ноль. не могу решить вопрос холодного старта: высталение приводоа в начальную позицию от которой буду просто отсчитывать шаги. Предполагаю что эта установка должна выполняться один раз при включении. Пробовал через прерывания - не разобрался. 

Подскажите пожалуйста, как это сделать.

#include <AccelStepper.h>
#include <MultiStepper.h>
//Привода
AccelStepper Xaxis(1, 7, 8); // pin 7 = step, pin 8 = direction
//Датчики
const byte Right = 2;
void setup() {
  // put your setup code here, to run once:
 pinMode(Right, INPUT);
Xaxis.setMaxSpeed(200);
Xaxis.setAcceleration (100);
if (digitalRead(Right)==LOW)
{
Xaxis.runToNewPosition  (600);   
} 
}
void loop() 
{
  // put your main code here, to run repeatedly:

   }
 

 

JasKo
Offline
Зарегистрирован: 21.11.2015

Нужно в цикле опрашивать конечник и сдвигать шаговик по одному шагу командой Xaxis.run();

Kalyava
Offline
Зарегистрирован: 13.07.2017

Попробовал и for и while и go while... Я не понимаю как указать условие правильно. У меня либо перестаёт реагировать на изменение входа, либо не получается цикличности.

 

b707
Offline
Зарегистрирован: 26.05.2017

выкладывайте код, как пробовали. Опишите что не так

JasKo
Offline
Зарегистрирован: 21.11.2015

Kalyava пишет:

Попробовал и for и while и go while... Я не понимаю как указать условие правильно. У меня либо перестаёт реагировать на изменение входа, либо не получается цикличности.

 

Как то так - 

#include <AccelStepper.h>
#include <MultiStepper.h>
//Привода
AccelStepper Xaxis(1, 7, 8); // pin 7 = step, pin 8 = direction
//Датчики
const byte Right = 2;
void setup() {
  // put your setup code here, to run once:
  pinMode(Right, INPUT);
  Xaxis.setMaxSpeed(200);
  Xaxis.setAcceleration (100);
  while(digitalRead(Right) != LOW) 
  {
    Xaxis.run();
  }
}
void loop()
{
  // put your main code here, to run repeatedly:

}