AccelStepper крутим шаговиком в две стороны
- Войдите на сайт для отправки комментариев
Ср, 28/07/2021 - 10:27
Всем здрасте!
Кто подскажет как покрутить шаговиком в две стороны.
Начинает движение шаговик с нажатия кнопки одиночного. Останавливается при срабатывании концевика limitswitch. пока что могу определенное расстояние движения задавать. но необходимо чтобы шаговик прекращал движение при срабатывании концевика.
AccelStepper - библиотека
#include <AccelStepper.h>
#define stepper_pin_step 4
#define stepper_pin_dir 5
float steps_per_pulse = 2;
AccelStepper stepper(AccelStepper::DRIVER, stepper_pin_step, stepper_pin_dir);
#define button1 6
#define button2 7
const int limitswitch1 = 8;
const int limitswitch2 = 9;
void setup(){
stepper.setMaxSpeed(50000);
stepper.setAcceleration(50000);
stepper.setSpeed(50000);
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
pinMode(limitswitch1, INPUT_PULLUP);
pinMode(limitswitch2, INPUT_PULLUP);
}
void loop(){
if (digitalRead(button1) == LOW && digitalRead(button2) == HIGH){//red button
stepper.runToNewPosition(10000);
stepper.setCurrentPosition(0);
}
if (digitalRead(button1) == HIGH && digitalRead(button2) == LOW){//green button
stepper.runToNewPosition(-10000);
stepper.setCurrentPosition(0);
}
}
В 21 и 25 строках используется функция, которая блокирует код пока не выполнится. Там же прямо перед ней комментарий есть: "Blocks until the new target position is reached"
благодарю. сменю код отпишусь.
пока тестирую такой код
if(movehome){ stepper.moveTo(positionhome); positionhome++; } if(moveload){ stepper.moveTo(positionhome); positionhome--; } if (digitalRead(buttonhome) == LOW && digitalRead(buttonload) == HIGH){//red button movehome = true; moveload = false; } if (digitalRead(buttonhome) == HIGH && digitalRead(buttonload) == LOW){//green button movehome = false; moveload = true; } if (digitalRead(limitswitchhome) == LOW){ positionhome = 0; stepper.setCurrentPosition(0); movehome = false; } if (digitalRead(limitswitchload) == HIGH){ positionhome = 0; stepper.setCurrentPosition(0); moveload = false; }