Здравствуйте!
Можете попробовать использовать мои библиотеки.
Для STEP/DIR драйвера библиотека StepDirDriver (урок 35).
Для управления LED индикатором библиотека Led4Digits (урок 20).
Я бы советовал придерживаться следующей последовательности разработки программы.
1. Из урока 35 загрузить в Ардуино скетч программы драйвера ШД с управлением AT командами, и с помощью программы верхнего уровня (из того же урока) проверить работу драйвера, самого двигателя, диапазон регулировки скорости, крутящий момент двигателя и т.п. Таким образом вы сможете полностью проверить работу вашей системы, как электронику, так и механику. Только регулировка будет не от потенциометра, а с компьютера.
2. Если все устраивает, тогда начинаете писать программу. Пишите простейший вариант, который просто вращает двигатель с постоянной скоростью.
Код: Выделить всё
#include <TimerOne.h>
#include <StepDirDriver.h>
StepDirDriver myMotor(10, 11, 12); // создаем объект типа StepDirDriver, задаем выводы для сигналов
void setup() {
Timer1.initialize(250); // инициализация таймера 1, период 250 мкс
Timer1.attachInterrupt(timerInterrupt, 250); // задаем обработчик прерываний
myMotor.setMode(0, false); // шаговый режим, без фиксации при остановке
myMotor.setDivider(10); // делитель частоты 10 (1 оборот в сек)
}
void loop() {
myMotor.step(100);
}
//-------------------------------------- обработчик прерывания 0,25 мс
void timerInterrupt() {
myMotor.control(); // управление двигателем
}
3. К этому скелету программы начинаете добавлять все остальное. Подключаете потенциометр и считываете его значение. Я бы настоятельно советовал это значение усреднить. Об этом написано в уроке 13.
4. Масштабируете значение потенциометра в необходимый вам диапазон для скорости вращения (setDivider). Рабочий диапазон определяете на пером этапе.
5. Загружаете масштабируемое значение в setDivider. Теперь вы можете регулировать скорость вращения двигателя от потенциометра.
6. Остается добавить индикацию. читаете урок 20, добавляете библиотеку, выводите на индикатор значение setDivider. Проверяете.
7. Переводите значение setDivider в нужный вам формат, например число оборотов в минуту.
Я вижу это как-то так.