1 (изменено: chipmasterbga1, 27-03-2020 20:05:52)

Тема: шаговый мотор как добавить 2 мотор

не пойму как добавить в скеч второй шаговый мотор задача такова один мотор крутится постоянно второй мотор на ниже скорости крутится медленней
добавил второй мотор в общем работает но оба мотора на одинаковой скорости останавливаются задача чтобы один мотор останавливался второй крутился постоянно



/*Программа для вращения шагового мотора NEMA 17, серии 17HS4402 + драйвер A4988. Сначала мотор совершает полный оборот в одну сторону, потом в другую*/

const int pinStep1 = 13;  /*целочисленная константа, хранящая номер цифрового контакта Arduino, который подаёт сигнал Step на драйвер. Каждый импульс от этого контакта — это перемещение мотора на один шаг*/
const int pinStep2 = 11;
const int pinDir1 = 12;  /*целочисленная константа, хранящая номер цифрового контакта Arduino, который подаёт сигнал Direction на драйвер. Наличие импульса - мотор вращается в одну сторону, отсутствие - в другую*/
const int pinDir2 = 10;


#define BTN1_PIN 5 // Концевик 1.
#define BTN2_PIN 6 // Концевик 2.

//временная задержка между шагами мотора в мс
const int move_delay = 1; //стояло 3

//шагов на полный оборот
const int steps_rotate_360 = 200;

/*Функция, в которой происходит инициализация всех переменных программы*/
void setup()
{
/*задаём контактам Step и Direction режим вывода, то есть они выдают напряжение*/
  pinMode(pinStep1, OUTPUT);
  pinMode(pinDir1, OUTPUT);
  pinMode(pinStep2, OUTPUT);
  pinMode(pinDir2, OUTPUT);
//устанавливаем начальный режим
  digitalWrite(pinStep1, HIGH);
  digitalWrite(pinDir1, LOW);

  digitalWrite(pinStep2, HIGH);
  digitalWrite(pinDir2, LOW);
}

/*Функция-цикл в которой задаётся поведение программы*/
void loop()
{
//устанавливаем направление вращения
  digitalWrite(pinDir1, HIGH);
  digitalWrite(pinDir2, HIGH);
 
  for(int i = 0; i < steps_rotate_360; i++)

{
    digitalWrite(pinStep1, HIGH);
    delay(move_delay);
    digitalWrite(pinStep1, LOW);
    delay(move_delay);
   
    digitalWrite(pinStep2, HIGH);
    delay(move_delay);
    digitalWrite(pinStep2, LOW);
    delay(move_delay);
 
  }

  delay(move_delay*10);

//устанавливаем направление вращения обратное
  digitalWrite(pinDir1, LOW);
  digitalWrite(pinDir2, LOW);

  for(int i = 0; i < steps_rotate_360; i++)
  {
    digitalWrite(pinStep1, HIGH);
    delay(move_delay);
   
    digitalWrite(pinStep1, LOW);
   
    delay(move_delay);

    digitalWrite(pinStep2, HIGH);
delay(move_delay);
    digitalWrite(pinStep2, HIGH);
    delay(move_delay);
   
  }

  delay(move_delay*10);
}

2

Re: шаговый мотор как добавить 2 мотор

не используйте делай, прочтите статью про асинхронный таймер,
если все равно непонятно отпишитесь.

3

Re: шаговый мотор как добавить 2 мотор

http://robocraft.ru/blog/arduino/614.html
Рекомендую ознакомиться с данной библиотекой.
Удачи в проектах!