arduino и концевик

anon
Offline
Зарегистрирован: 23.05.2013
Доброго денечка. пытаюсь подружить шаговик и концевик. 
вот в таком случае шаговик со временем уезжает в сторону (делает в одну сторону больше шагов чем в другую).
когда убираю 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);
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Не понял Вашей проблемы (прочитайте "со стороны" и я уверен, Вы тоже не поймёте).

Чтобы Вас понимали нужно писать три пункта:

1. Чего Вы хотите получить
2. Что Вы получили
3. Чем №1 отличается от №2

Новички пропускают пункты №1 и №3, считая, что все вокруг знают чего они хотели. Таки нет - не знают.

anon
Offline
Зарегистрирован: 23.05.2013

суть. при запуске скетча шаговик стартует и, грубо говоря, едет до концевика, пока тот не сработает. как только концевик срабатывает, ШД отъезжает от него (на безопасное расстояние) и делает какую-то работу - в данном случае - ездит туда-сюда. так вооот, в этом случае накапливается ошибка - в одну сторону уезжает чуть больше, чем в другую, хотя в скетче указано одинаковое количество шагов. в том случае, когда убираю цикл с концевиком, не меняя часть с шаговиком - то ошибки нет - одинаковое количество шагов в каждую сторону

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, так строка 20 Вам зачем после того, как он уже отъехал?

Уже после того, как отъехали, Вы каждый раз проверяете не сработал ли концевик. И если не сработал, делаете шаг на -1, а потом в строках 28 и 30 на +10 и -10. Вот он у Вас на этот -1 и смещается.