Potrzebuję uruchomić silnik krokowy na arduino nano, przejrzałem przykładowe programy, niestety, nie każdy z nich ma budowę którą bym rozumiał Jeśli w programie jest rozpiska każdego kroku z osobna to spoko - rozumiem, jednak zanim w ten sposób zaprogramuje ardiuno to braknie mi pamięci
Na sam początek potrzebuję prostą sekwencję
-1.6 obrotu w lewo
-czekaj 1s
-1.4 obrotu w prawo
-czekaj 30s
całość w pętli
Proste? Proste! Ale nie dla mnie
W internecie znalazłem taki program; przez chwilę myślę sobie... będzie dobrze, coś rozumiem więc dam radę sobie to zmodyfikować, wgrałem oryginalny program - niestety silnik nie ruszył
Kod: Zaznacz cały
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
#define STEPS_PER_ROTATION 4096
void setup()
{
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
delay(100);
}
void loop()
{
rotate(1.5);
delay(2000);
rotate(-1.5);
delay(2000);
}
void rotate(float rotations) {
rotate_steps(rotations * STEPS_PER_ROTATION);
}
int phase = 0;
byte phases[] = { 1, 3, 2, 6, 4, 12, 8, 9 };
void rotate_steps(int steps)
{
int dir = (steps > 0) - (steps < 0);
steps *= dir;
long laststep;
for (int i = 0; i < steps;) {
long now = micros();
if (now - laststep < 1000) continue;
laststep = now;
stepper_writepins(phases[phase]);
phase = (8 + phase + dir) % 8;
i++;
}
stepper_writepins(0);
}
void stepper_writepins(int bitmap) {
digitalWrite(IN1, bitmap & 8 ? HIGH : LOW);
digitalWrite(IN2, bitmap & 4 ? HIGH : LOW);
digitalWrite(IN3, bitmap & 2 ? HIGH : LOW);
digitalWrite(IN4, bitmap & 1 ? HIGH : LOW);
}