Ответ:
Пример для Arduino и двухмоторной платформы с драйвером L298N. Предполагается, что входы IN1–IN4 драйвера подключены к выводам Arduino 8–11, а светодиод через резистор 220–330 Ом — к выводу 7 и GND. У драйвера должны быть подключены питание двигателей и общий GND с Arduino; для регулировки скорости входы ENA и ENB подключают к PWM-выводам. В этом примере они включены перемычками, поэтому моторы работают с полной скоростью.
Светодиод подключается последовательно с резистором: вывод 7 Arduino → резистор → анод светодиода; катод светодиода → GND. Направление вращения, соответствующее движению робота вперёд, зависит от подключения моторов.
Программа включает светодиод только в функции движения вперёд. При движении назад и остановке он выключен.
const int IN1 = 8;
const int IN2 = 9;
const int IN3 = 10;
const int IN4 = 11;
const int LED_PIN = 7;
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(LED_PIN, OUTPUT);
}
void stopRobot() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
digitalWrite(LED_PIN, LOW);
}
void moveForward() {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
digitalWrite(LED_PIN, HIGH);
}
void moveBackward() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
digitalWrite(LED_PIN, LOW);
}
void loop() {
moveForward();
delay(2000);
stopRobot();
delay(500);
moveBackward();
delay(2000);
stopRobot();
delay(1000);
}Для реального робота программу движения можно вызывать по командам или показаниям датчиков; функции задают требуемую связь между направлением движения и светодиодом.
