Untitled
unknown
c_cpp
2 years ago
3.0 kB
6
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