#define STEP_1 PORTB |= B00000010
#define DIR_1 PORTB |= B00000001
#define STEP_0 PORTB &= B11111101
#define DIR_0 PORTB &= B11111110
#define step_num 400 // количество шагов на 1 оборот
#define step_impuls 10 // импульс для запуска шага в мкс
#define step_duration 800 // длительность шага
void setup()
{
pinMode(8, OUTPUT); // DIR
pinMode(9, OUTPUT); // STEP
STEP_0;
DIR_0;
}
void loop()
{
steps(800);
delay(1000);
steps(-800);
delay(1000);
steps(400);
delay(1000);
steps(-400);
delay(1000);
}
//******************
void steps(int shag)
{
if(shag>0){DIR_1;} else {DIR_0; shag=abs(shag);}
for(uint16_t i = 0; i < shag; i++)
{
STEP_1;
delayMicroseconds(step_impuls);
STEP_0;
delayMicroseconds(step_duration-step_impuls);
}
}