Cześć, mam doświadczenie, jako programista sterowników PLC (Siemens), chciałbym spróbować się "przesiąść" na Malinkę (hobbistycznie). Mam dostęp do Raspberry Pi 2 B+ i pisałem kiedyś bardzo dużo w języku JavaScript (do użytku stron). Z tego powodu postanowiłem zaprogramować swój projekt właśnie na Raspberry Pi, a do tego z użyciem Note.js.
W moim projekcie potrzebuję sterować 4 silnikami krokowymi (a dokładniej sterownikami silników). Tak więc potrzebuję wygenerować sygnał typu PTO (Pulse Train Output), czyli z dynamicznie zmieniającą się (programowo) wartością częstotliwości wystawiania sygnału na wyjście o jak najmniejszej szerokości pulsu (stałym wypełnieniem).
Czy mój tok rozumowania działania malinek jest poprawny, zgodnie z poniższym kodem?
const Gpio = require('pigpio').Gpio;
const pulse = new Gpio(17, {mode: Gpio.OUTPUT}); //Pulse
const dir = new Gpio(18, {mode: Gpio.OUTPUT}); //Direction (Bool)
sint speed; //Wartość z innej funkcji
bool dir; //Wartość z innej funkcji
If (speed != 100){
setInterval(() => {
pulse.digitalWrite(1)
If (pulse > 0) {
pulse.digitalWrite(0)
}
}, speed);
}
Czy z każdym interwałem cyklu wartość zostanie ustawiona na 1 i zajdzie impuls, czy zostanie wyzerowany zanim wskoczy? Należy zastosować pewnego rodzaju delay? W jaki sposób najlepiej to wykonać, tak aby sterownik pracował z największą częstotliwością? Zmienna speed będzie przyjmować wartości od 1 do 100. Gdzie, np. 100 oznacza brak pracy silników. (Prędkość przeskaluję potem do rzeczywistej zadanej).
Z góry dziękuję za odpowiedź.