Остановка ШД в SETUP по сигналу
- Войдите на сайт для отправки комментариев
Чт, 13/07/2017 - 19:08
Приветсвую!
У меня прикладная задача. Всю механику собрал. Приводами подёргал - всё 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:
}
Нужно в цикле опрашивать конечник и сдвигать шаговик по одному шагу командой Xaxis.run();
Попробовал и for и while и go while... Я не понимаю как указать условие правильно. У меня либо перестаёт реагировать на изменение входа, либо не получается цикличности.
выкладывайте код, как пробовали. Опишите что не так
Попробовал и 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: }