L298N with Arduino Uno R3

Wiring for the L298N dual motor driver on the Arduino Uno R3 (ATmega328P, 5 V logic), chosen with the same pin rules BoardPilot uses: default buses first, and no pins that are used for flash, USB, the debugger or booting.

Wiring

L298N pinRoleArduino Uno R3 pinNotes
ENAInput to the part2 (PD2)Motor A speed (PWM). Remove the jumper to use it
IN1Input to the part~3 (PD3)Motor A direction
IN2Input to the part4 (PD4)Motor A direction
IN3Input to the part~5 (PD5)Motor B direction
IN4Input to the part~6 (PD6)Motor B direction
ENBInput to the part7 (PD7)Motor B speed (PWM). Remove the jumper to use it
12VNot wired to the boardnot connectedMotor supply 5 to 35 V from a separate supply
GNDGroundGND
5VNot wired to the boardnot connected5 V output of the on-board regulator (jumper on, supply up to 12 V)
OUT1Not wired to the boardnot connectedMotor A
OUT2Not wired to the boardnot connectedMotor A
OUT3Not wired to the boardnot connectedMotor B
OUT4Not wired to the boardnot connectedMotor B

Check before you power it on

Test code (Arduino)

// Motor A: ENA = speed (PWM), IN1/IN2 = direction. Remove the ENA jumper on the module.
void setup() {
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(2, OUTPUT);
}

void loop() {
  digitalWrite(3, HIGH);
  digitalWrite(4, LOW);
  analogWrite(2, 180);  // about 70% speed
  delay(2000);
  analogWrite(2, 0);    // stop
  delay(1000);
}

Arduino board: arduino:avr:uno.

Questions

Which Arduino Uno R3 pins do I use for the L298N?

ENA → 2 (PD2), IN1 → ~3 (PD3), IN2 → 4 (PD4), IN3 → ~5 (PD5), IN4 → ~6 (PD6), ENB → 7 (PD7), GND → GND.

Does the L298N work with the Arduino Uno R3 at 5 V?

Yes: the L298N runs at 5 V and the Arduino Uno R3 uses 5 V signals, so no level shifting is needed.

BoardPilot checks this wiring in 3D as you build it, and finds crossed or missing wires on the real board.

Download BoardPilot

Full Arduino Uno R3 pinout · L298N dual motor driver: all pins and data

The L298N on other boards

Other parts on the Arduino Uno R3