// Пины управления скоростью и направлением мотора constexpr auto pinM1Speed = 9; constexpr auto pinM1Direction = A1; constexpr auto pinM2Speed = 10; constexpr auto pinM2Direction = A0; int pins[] = {pinM1Speed, pinM1Direction, pinM2Speed, pinM2Direction}; void setup() { // Настраиваем все пины управление моторами в режим выхода for (int i = 0; i < 4; i++) { pinMode(pins[i], OUTPUT); } } void loop() { // Медленно разгоняем M1 в одну сторону for (int i = 0; i <= 255; i++) { motorsDrive(i, 0); delay(10); } // Медленно тормозим мотор for (int i = 255; i >= 0; i--) { motorsDrive(i, 0); delay(10); } // Медленно разгоняем M1 в другую сторону for (int i = 0; i <= 255; i++) { motorsDrive(-i, 0); delay(10); } // Медленно тормозим мотор for (int i = 255; i >= 0; i--) { motorsDrive(-i, 0); delay(10); } // медленно разгоняем M2 в одну сторону for (int i = 0; i <= 255; i++) { motorsDrive(0, i); delay(10); } // медленно тормозим мотор for (int i = 255; i >= 0; i--) { motorsDrive(0, i); delay(10); } // медленно разгоняем M2 в другую сторону for (int i = 0; i <= 255; i++) { motorsDrive(0, -i); delay(10); } // медленно тормозим мотор for (int i = 255; i >= 0; i--) { motorsDrive(0, -i); delay(10); } } // Функция управления моторами void motorsDrive(int M1Speed, int M2Speed) { if (M1Speed > 0) { digitalWrite(pinM1Direction, HIGH); } else { digitalWrite(pinM1Direction, LOW); } if (M2Speed > 0) { digitalWrite(pinM2Direction, HIGH); } else { digitalWrite(pinM2Direction, LOW); } analogWrite(pinM1Speed, abs(M1Speed)); analogWrite(pinM2Speed, abs(M2Speed)); }