For function going wrong?
i have made code have easy way (half)step stepper
the stepper 200 steps make full circle
if
when do
can help?
the stepper 200 steps make full circle
if
code: [select]
stepf(200);it goes around 4 times.when do
code: [select]
stepf(50);it perfect circle.can help?
code: [select]
int steppin1 = 8;
int steppin2 = 9;
int steppin3 = 10;
int steppin4 = 11;
int val = 10;
void setup()
{
pinmode(steppin1, output);
pinmode(steppin2, output);
pinmode(steppin3, output);
pinmode(steppin4, output);
}
void stepf(int steps)
{
for (int i=0; < steps; i++)
{
digitalwrite(steppin1, high);
digitalwrite(steppin2, low);
digitalwrite(steppin3, low);
digitalwrite(steppin4, low);
delay(val);
digitalwrite(steppin1, high);
digitalwrite(steppin2, low);
digitalwrite(steppin3, high);
digitalwrite(steppin4, low);
delay(val);
digitalwrite(steppin1, low);
digitalwrite(steppin2, low);
digitalwrite(steppin3, high);
digitalwrite(steppin4, low);
delay(val);
digitalwrite(steppin1, low);
digitalwrite(steppin2, high);
digitalwrite(steppin3, high);
digitalwrite(steppin4, low);
delay(val);
digitalwrite(steppin1, low);
digitalwrite(steppin2, high);
digitalwrite(steppin3, low);
digitalwrite(steppin4, low);
delay(val);
digitalwrite(steppin1, low);
digitalwrite(steppin2, high);
digitalwrite(steppin3, low);
digitalwrite(steppin4, high);
delay(val);
digitalwrite(steppin1, low);
digitalwrite(steppin2, low);
digitalwrite(steppin3, low);
digitalwrite(steppin4, high);
delay(val);
digitalwrite(steppin1, high);
digitalwrite(steppin2, low);
digitalwrite(steppin3, low);
digitalwrite(steppin4, high);
delay(val);
}
}
void stepb(int times)
{
for (int i=0; < times; i++)
{
digitalwrite(steppin1, low);
digitalwrite(steppin2, low);
digitalwrite(steppin3, low);
digitalwrite(steppin4, high);
delay(val);
digitalwrite(steppin1, low);
digitalwrite(steppin2, high);
digitalwrite(steppin3, low);
digitalwrite(steppin4, high);
delay(val);
digitalwrite(steppin1, low);
digitalwrite(steppin2, high);
digitalwrite(steppin3, low);
digitalwrite(steppin4, low);
delay(val);
digitalwrite(steppin1, low);
digitalwrite(steppin2, high);
digitalwrite(steppin3, high);
digitalwrite(steppin4, low);
delay(val);
digitalwrite(steppin1, low);
digitalwrite(steppin2, low);
digitalwrite(steppin3, high);
digitalwrite(steppin4, low);
delay(val);
digitalwrite(steppin1, high);
digitalwrite(steppin2, low);
digitalwrite(steppin3, high);
digitalwrite(steppin4, low);
delay(val);
digitalwrite(steppin1, high);
digitalwrite(steppin2, low);
digitalwrite(steppin3, low);
digitalwrite(steppin4, low);
delay(val);
digitalwrite(steppin1, high);
digitalwrite(steppin2, low);
digitalwrite(steppin3, low);
digitalwrite(steppin4, high);
delay(val);
}
}
void loop()
{
stepf(200);
stepb(200);
}
it looks you're performing 8 steps per iteration of loop. if each half-step, 50 * 8 / 2 == 200; 50 times 8 half-steps 1 complete revolution of 200 steps.
Arduino Forum > Forum 2005-2010 (read only) > Software > Syntax & Programs > For function going wrong?
arduino
Comments
Post a Comment