Переключаем провод от драйвера с 9 на 13 вывод ардуины (там светодиод).
Заливаем спрограмму - проверяем, моргает ли светодиод.
Ничего в программе - не меняем, просто переключаем провод.
И - как сейчас стоят джамперы на драйвере, которые делитель определяют?
Если двигатель крутится в одну сторону, отключаем от 13 ноги ардуины провод.
Направление поменялось?
Подключаем его (провод) на землю ардуины, именно ардуины. Направление поменялось?
Какие-нибудь приборы доступны? Мультиметр, например? Ток бы через dir померить.
Код:
int Motor1EN = 7; //6 вывод колодки (en)
int Motor1dir = 13; //4 колодка (dir)
int Motor1step = 11; // 5 колодка (step)
void setup ()
{
pinMode(Motor1EN, OUTPUT);
pinMode(Motor1dir, OUTPUT);
pinMode(Motor1step, OUTPUT);
digitalWrite(Motor1EN, HIGH);
digitalWrite(Motor1dir, LOW); //при смене на HIGH ничего не изменилось А и не должно, ибо тут задаются НАЧАЛЬНЫЕ значения. Этих трех строк вообще может не быть. Просто хороший тон.
digitalWrite(Motor1step, LOW);
}
void loop ()
{
stepMotor1(1, 100); // Светодиод на 13 ноге должен светиться секунд 8. (и светится - проверил)
delay (1000);
stepMotor1(0, 100); // // Светодиод на 13 ноге НЕ должен светиться секунд 8.
delay (1000);
}
void stepMotor1(int dir, int step)
{
digitalWrite(Motor1EN, HIGH); // при LOW не запускается
if (dir)
{
digitalWrite(Motor1dir, HIGH);} //при LOW никаких изменений
else
{ digitalWrite(Motor1dir, LOW);} // при HIGH никаких изменений
for (int i=0;i<step; i++)
{
delay(50);//задержка в 1/20 секунды
digitalWrite(Motor1step, LOW);
delay(50); //Это - не уровни, это задержка в одну двадцатую секунды.
//То есть двигатель делает 10 шагов в секунду.
digitalWrite(Motor1step, HIGH);
}
delay(100);
digitalWrite(Motor1EN, HIGH); //наличие этой строчки в программе ни на что не влияет Она, строчка эта, выключает драйвер после использования
}
Добавлено спустя 54 секунды:Да, если светодиод моргает - алгоритм нормально завершается. Только что проверил на реальном железе.