arduino и концевик
- Войдите на сайт для отправки комментариев
Ср, 06/09/2017 - 15:38
Доброго денечка. пытаюсь подружить шаговик и концевик. вот в таком случае шаговик со временем уезжает в сторону (делает в одну сторону больше шагов чем в другую). когда убираю do...while - нормально топчится на месте
#include <Bounce.h> #include <Stepper.h> #define STEPS 200 Stepper stepper(STEPS, 2, 6); #define BUTTON 10 byte flag = 0; Bounce bouncer = Bounce( BUTTON,5 ); void setup() { pinMode(BUTTON, INPUT); } void loop(){ do { bouncer.update ( ); byte value = bouncer.read(); if (value == LOW){ stepper.setSpeed(10); stepper.step(-1);} else if (value == HIGH) { stepper.setSpeed(10); stepper.step(100); flag = flag + 1;}} while (flag == 0); stepper.setSpeed(10); stepper.step(10); delay(1000); stepper.step(-10); delay(1000); }
Не понял Вашей проблемы (прочитайте "со стороны" и я уверен, Вы тоже не поймёте).
Чтобы Вас понимали нужно писать три пункта:
1. Чего Вы хотите получить
2. Что Вы получили
3. Чем №1 отличается от №2
Новички пропускают пункты №1 и №3, считая, что все вокруг знают чего они хотели. Таки нет - не знают.
суть. при запуске скетча шаговик стартует и, грубо говоря, едет до концевика, пока тот не сработает. как только концевик срабатывает, ШД отъезжает от него (на безопасное расстояние) и делает какую-то работу - в данном случае - ездит туда-сюда. так вооот, в этом случае накапливается ошибка - в одну сторону уезжает чуть больше, чем в другую, хотя в скетче указано одинаковое количество шагов. в том случае, когда убираю цикл с концевиком, не меняя часть с шаговиком - то ошибки нет - одинаковое количество шагов в каждую сторону
Ну, так строка 20 Вам зачем после того, как он уже отъехал?
Уже после того, как отъехали, Вы каждый раз проверяете не сработал ли концевик. И если не сработал, делаете шаг на -1, а потом в строках 28 и 30 на +10 и -10. Вот он у Вас на этот -1 и смещается.