Untitled

 avatar
unknown
c_cpp
a year ago
3.0 kB
4
Indexable
// Определение пинов для подключения к драйверу ULN2003
const int motorPin1 = 8; // IN1 на драйвере ULN2003
const int motorPin2 = 9; // IN2 на драйвере ULN2003
const int motorPin3 = 10; // IN3 на драйвере ULN2003
const int motorPin4 = 11; // IN4 на драйвере ULN2003

// Шаги для полного оборота (зависит от двигателя и режима управления)
const int stepsPerRevolution = 2048;

void setup() {
  // Устанавливаем режим работы пинов
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
}

void loop() {
  // Вращение по часовой стрелке
  for (int i = 0; i < stepsPerRevolution; i++) {
    stepMotor(i % 4);
    delay(2); // Регулировка скорости вращения
  }

  delay(1000); // Пауза между вращениями

  // Вращение против часовой стрелки
  for (int i = 0; i < stepsPerRevolution; i++) {
    stepMotor((i % 4) + 4);
    delay(2); // Регулировка скорости вращения
  }

  delay(1000); // Пауза между вращениями
}

// Функция для управления шагами двигателя
void stepMotor(int thisStep) {
  switch (thisStep) {
    case 0:  // 1010
      digitalWrite(motorPin1, HIGH);
      digitalWrite(motorPin2, LOW);
      digitalWrite(motorPin3, HIGH);
      digitalWrite(motorPin4, LOW);
    break;
    case 1:  // 0110
      digitalWrite(motorPin1, LOW);
      digitalWrite(motorPin2, HIGH);
      digitalWrite(motorPin3, HIGH);
      digitalWrite(motorPin4, LOW);
    break;
    case 2:  //0101
      digitalWrite(motorPin1, LOW);
      digitalWrite(motorPin2, HIGH);
      digitalWrite(motorPin3, LOW);
      digitalWrite(motorPin4, HIGH);
    break;
    case 3:  //1001
      digitalWrite(motorPin1, HIGH);
      digitalWrite(motorPin2, LOW);
      digitalWrite(motorPin3, LOW);
      digitalWrite(motorPin4, HIGH);
    break;
    case 4:  // 1010 обратный порядок
      digitalWrite(motorPin1, HIGH);
      digitalWrite(motorPin2, LOW);
      digitalWrite(motorPin3, HIGH);
      digitalWrite(motorPin4, LOW);
    break;
    case 5:  // 0110 обратный порядок
      digitalWrite(motorPin1, LOW);
      digitalWrite(motorPin2, HIGH);
      digitalWrite(motorPin3, HIGH);
      digitalWrite(motorPin4, LOW);
    break;
    case 6:  //0101 обратный порядок
      digitalWrite(motorPin1, LOW);
      digitalWrite(motorPin2, HIGH);
      digitalWrite(motorPin3, LOW);
      digitalWrite(motorPin4, HIGH);
    break;
    case 7:  //1001 обратный порядок
      digitalWrite(motorPin1, HIGH);
      digitalWrite(motorPin2, LOW);
      digitalWrite(motorPin3, LOW);

digitalWrite(motorPin4, HIGH);
break;
}
}
Editor is loading...
Leave a Comment