w 24h

Oto prosty kod do sterowania silnikiem krokowym przy użyciu pinów PUL i DIR na Arduino Uno:
// Definicja pinów
const int PUL_PIN_1 = 8; // Pin PUL 1
const int DIR_PIN_1 = 9; // Pin DIR 1
const int PUL_PIN_2 = 10; // Pin PUL 2
const int DIR_PIN_2 = 11; // Pin DIR 2
// Parametry
int SZYBKOSC = 1000; // Częstotliwość impulsów (w Hz)
int TIME = 500; // Długość impulsu w mikrosekundach
int DROGA = 1000; // Liczba impulsów, po których następuje zmiana kierunku
void setup() {
// Ustawienie pinów jako wyjścia
pinMode(PUL_PIN_1, OUTPUT);
pinMode(DIR_PIN_1, OUTPUT);
pinMode(PUL_PIN_2, OUTPUT);
pinMode(DIR_PIN_2, OUTPUT);
// Ustalenie początkowego kierunku
digitalWrite(DIR_PIN_1, HIGH);
digitalWrite(DIR_PIN_2, HIGH);
}
void loop() {
// Liczba impulsów wykonanych w tej iteracji
static int licznik = 0;
// Generowanie impulsów na pinach PUL
digitalWrite(PUL_PIN_1, HIGH);
digitalWrite(PUL_PIN_2, HIGH);
delayMicroseconds(TIME);
digitalWrite(PUL_PIN_1, LOW);
digitalWrite(PUL_PIN_2, LOW);
delayMicroseconds(TIME);
// Zwiększ licznik
licznik++;
// Po osiągnięciu zadanej liczby impulsów zmień kierunek
if (licznik >= DROGA) {
licznik = 0; // Reset licznika impulsów
// Zmiana kierunku na przeciwny
digitalWrite(DIR_PIN_1, !digitalRead(DIR_PIN_1));
digitalWrite(DIR_PIN_2, !digitalRead(DIR_PIN_2));
}
// Częstotliwość impulsów (SZYBKOSC)
delayMicroseconds(1000000 / SZYBKOSC);
}
Piny PUL_PIN_1 (8) i PUL_PIN_2 (10) generują impulsy.
Piny DIR_PIN_1 (9) i DIR_PIN_2 (11) kontrolują kierunek ruchu.
Parametry SZYBKOSC i TIME możesz dostosować do swoich potrzeb (częstotliwość impulsów i długość impulsów).
Po osiągnięciu zadanej liczby impulsów (DROGA), kierunek (DIR) jest zmieniany na przeciwny, a licznik impulsów jest resetowany.