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);
}