Skip to main content

L298N Motor Drive Controller - Reference Guide

Navigation - L298N Quick Reference Guide:

IN1 and IN2 = Right Motors
IN3 and IN4 = Left Motors
ENA and ENB = controls the speed of the right and left motors via PWM.

ENA or ENB
IN1 or IN3
IN2 or IN4
Motor Action
0
X
X
Stop
1
0
0
Brake
1
0
1
Forward
1
1
0
Backward
1
1
1
Brake


Connection on the Arduino: 









Pin Connection
L298N
Arduino Microcontroller
ENA
10 (~PWM)
ENB
5(~PWM)
IN1
9
IN2
8
IN3
7
IN4
6


Car Movement Directions vs. Wheels Rotation




Car Moves Forward

Car Moves Backward

Car Stops

Car Turns Left

Car Turns Right

Left Wheels\Motors

Forward

Back

Stop


Back


Forward


Right Wheels\Motors


Forward

Back

Stop

Forward

Back







(Picture courtesy of ArcBotics)



Sample Code:

Here is a code I wrote to make the care move forward:

/* 
    Amr - 11/14/2017
    Basic Navigation 
    Car Moves Forward
*/

// defining the pins connected between the L298N Dual H-Bridge and Arduino Microcontroller

//pins that will control speed of motors, enable PWM
int ENA = 10;
int ENB = 5;

//right motors
int IN1 = 9;
int IN2 = 8;

//left motors
int IN3 = 7;
int IN4 = 6;



void setup() {
  // put your setup code here, to run once:
  //define the mode of the pins, are they pins sending data to outside peripherals? or recieving data? .....
  pinMode(ENA, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}


/*
    To move the car forward, both left motors and right motors must be rotating forward.

    So that means:
    Right Motor - ENA = 1; IN1 = 0; IN2 = 1
    Left Motor - ENB = 1; IN3 = 0; IN4 = 1


    We write the code for that in void loop() below
*/

void loop() {
  // put your main code here, to run repeatedly:

  digitalWrite(ENA, HIGH);
  digitalWrite(ENB, HIGH);
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
  
}


Popular posts from this blog

Logic Gate Truth Tables - Reference Guide (Cheat Sheet)

A logic gate is the implementation of a Boolean function. It performs a logic operation on one or more binary input. By binary I mean that the input can either be 1 or 0, nothing else. This guide is intended to be quick guide\reference, I will dive into more details about each gate on transistor\diode level in other posts. The guide cover gates with 2 inputs, meaning that each truth table will have 4 cases (2^2 = 4) AND Gate: Boolean Logic Operator: Q = A  •  B  Input Output A B Q 0 0 0 0 1 0 1 0 0 1 1 1 Summary: in order to achieve 1 on the output, both inputs A AND B must be 1 OR Gate: Boolean Logic Operator: Q = A  +  B  Input Output A B Q 0 0 0 0 1 1 1 0 1 1 1 1 Summary: in order to ...

How Does an Inverter (NOT) Gate Work - NOT Gate Explained

For a video version of this tutorial, please refer to this link . An inverter gate, or NOR gate for short, is one of the essential logic gates used constructed digital circuits. As implied by its name, the NOT gate works by taking an input, inverting it, then outputting the inverted value. The NOT gate schematic symbol looks like a triangle with clown nose on the Output side (as shown in the Figure above). In logic circuits, inputs and outputs are binary, which means their value can either be 0 or 1. So: If NOT receives a 0 at the input, it will output 1 . If NOT receives 1 at the input, it will output 0 . To sum it up, the truth table for the NOT gate will be as the following: Input Output X F 0 1 1 0 The NOT gate can be algebraically represented as the following:  F = X' (or you can have a bar above the X) where :     F is the output and X is the input

How to Connect the Hercules Dual 15A 6-20V Motor Controller, Load its Library and Program it

The Hercules Motor Controller Board First, if you don't have the Arduino Integrated Development Environment (IDE) installed, please download and install it from this following link: https://www.arduino.cc/en/Main/Software Once you go to the link above, scroll down to the following section: If you are using a  Windows PC, click on Windows Installer link  for fast and easy installation process.  If you are using  a Raspberry Pi , click on the Linux ARM link. For other Linux distros (Ubuntu, etc...) use either Linux 64 or Linux 32 depending on what operating system you have installed. Second, download the software library provided by the manufacturer. Don't use the link on the official website of the product as the library there doesn't work. Instead, use the one on github. Here is the link:  https://github.com/Seeed-Studio/Hercules_Motor_Driver Once you open the link above, click on 'clone or download' then 'Download Z...