https://pastein.ru/t/Cp

  скопируйте уникальную ссылку для отправки


// Подключение А мотора
int enA = 9;
int in1 = 8;
int in2 = 7;
// Подключение B мотора
int enB = 3;
int in3 = 5;
int in4 = 4;

void setup() {
	// Установка для всех моторов пин-выход
	pinMode(enA, OUTPUT);
	pinMode(enB, OUTPUT);
	pinMode(in1, OUTPUT);
	pinMode(in2, OUTPUT);
	pinMode(in3, OUTPUT);
	pinMode(in4, OUTPUT);
	
	// Выключить мотор. Начальное состояние
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}

void loop() {
	directionControl();
	delay(1000);
	speedControl();
	delay(1000);
}

// Эта функция позволяет вам контролировать направление вращения двигателей
void directionControl() {
	// Устанавливаем максимальную скорость для двигателя
	// Для ПВМ максимальное возможное значение
	analogWrite(enA, 255);
	analogWrite(enB, 255);

	// Очередь моторов A&B
	digitalWrite(in1, HIGH);
	digitalWrite(in2, LOW);
	digitalWrite(in3, HIGH);
	digitalWrite(in4, LOW);
	delay(2000);
	
	// Меняем направление двигателя
	digitalWrite(in1, LOW);
	digitalWrite(in2, HIGH);
	digitalWrite(in3, LOW);
	digitalWrite(in4, HIGH);
	delay(2000);
	
	// Выключение двигателей
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}

// Эта функция контролирует скорость моторов
void speedControl() {
	// Очередь включение моторв
	digitalWrite(in1, LOW);
	digitalWrite(in2, HIGH);
	digitalWrite(in3, LOW);
	digitalWrite(in4, HIGH);
	
	// Разгон с нуля до максимальной скорости
	for (int i = 0; i < 256; i++) {
		analogWrite(enA, i);
		analogWrite(enB, i);
		delay(20);
	}
	
	// Замедление с максимальной скорости до 0
	for (int i = 255; i >= 0; --i) {
		analogWrite(enA, i);
		analogWrite(enB, i);
		delay(20);
	}
	
	// Выключеие мотора
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}