Поменяли на сервопривод, вот такой iHSS57-36-20
и работать перестало (
Если поставить digitalWrite - крутит нормально, но медленно. Ставишь вывод порт - просто не реагирует, при этом другие шаговики (простые без енкодеров) на соседних пинах работают.
Спросил Perplexity, получил ответ который вполне похож на правду.
`
Функция digitalWrite генерирует “стандартный” фронт, который подходит большинству драйверов. Он дольше и “мягче”, чем портовые транзакции, создавая не мгновенный, а более протяжённый фронт.
При прямом управлении портом фронты не только быстрые, но и напряжение/ток может быть недостаточным для “прокачки” входной оптопары драйвера iHSS57. Особенно если она рассчитана на подтяжку к +5/24В и ожидает не столько изменения фронта, сколько определённого уровня мощности в цепи. Так работают многие промышленные драйверы для оптопар.
`
В новом моторе действительно входы через опторазвязку.
Пока видится вариант подключить через доп. транзистор.
UPD: Посмотрел код digitalWrite нашел интересный коммент
// If the pin that support PWM output, we need to turn it off
// before doing a digital write.
и дальше
if (timer != NOT_ON_TIMER) turnOffPWM(timer);
у 10 пина как раз ШИМ. Попробую перевесить этот мотор на другой.
Не верю! ((с) Станиславский)
digitalWrite выполняется 5-7 мкс, при задержке 1000 мкс никакой разницы быть не может.
И совет на будущее: если хотите, чтобы Вас не обвиняли во вранье, приводите описакние именно для того кода, который помещаете в сообщение, ибо очень большое подозрение, что “не роаботает” у Вас один код, а процитировали Вы совершенно другой. Тем более, что “соседние пины” в приведенном Вами коде не фигурируют.
Не верите чему именно?
Что можно отдельно создать скетч, и на нем проверить как работает а как нет?
Мы тут не обсуждаем как что лучше в порт или digitalWrite для большого скетча.
Мы тут обсуждаем почему одно работает, а другое нет в конкретном скетче на 9 строк.
И про вранье как то неприятно. В чем именно я по Вашему солгал?