Всем привет! Пытаюсь запустить сабж, следуя инструкции: "Для управления 42STH60-1206A нельзя использовать Драйвер шагового двигателя (Troyka-модуль) , но можно использовать Motor-Shield , на место одного двигателя подключив обмотку одной катушки, на место другого двигателя – обмотку другой катушки, управляя направлением так же как и коллекторными двигателями (на оба пинах направления должен быть одинаковый сигнал), а на пины вращения последовательно подавать напряжение (то на один, то на другой)". Середины обмоток висят в воздухе. Пины стандартные - 4,5,6,7. Сниппет написал такой: Код (Javascript): var Motor = require('@amperka/motor'); var one = Motor.connect({phasePin: P4, pwmPin: P5, freq: 0}); var two = Motor.connect({phasePin: P7, pwmPin: P6, freq: 0}); var first = true; setInterval(function() { if(first) { first = false; two.write(0); one.write(0.7); } else { first = true; one.write(0); two.write(0.7); } }, 100); В результате вал ШД перемещается на шаг вперед и шаг назад в бесконечной петле. Подскажите, правильно ли я понял фразу "управляя направлением так же как и коллекторными двигателями" и какие тут еще могут быть варианты?
Ghbdtn! почти все правильно, за исключением одной детали. Если бы я был двигателем, по этому коду я бы не понял в какую сторону мне вращаться. По двум состояниям (first = true|false) нельзя определить через какую сторону вращаться: через лево или через право. Вот и получается дергание. Чтобы двигатель понимал в какую сторону вращаться, у него есть 4 состояния. Последовательно переключаясь между ними, двигателю объясняют в какую сторону вращаться. Технически это реализовывается включая обмотки не только в одну сторону, но и в другу. Вот пример: Код (Javascript): var Motor = require('@amperka/motor'); var one = Motor.connect({phasePin: P4, pwmPin: P5, freq: 0}); var two = Motor.connect({phasePin: P7, pwmPin: P6, freq: 0}); var phase = 0; setInterval(function() { switch (phase % 4) { case 0: two.write(0); one.write(-1); break; case 1: two.write(-1); one.write(0); break; case 2: two.write(0); one.write(1); break; case 3: two.write(1); one.write(0); break; } phase++; }, 100);
Орешек знаний твёрд, но всё же мы не привыкли отступать! Нам расколоть его поможет - форум Амперки и, конечно, гуру parovoZZ