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 и смещается.