DC Motors connected to l298n motor driver won't work

I bought an arduino, l298n motor driver, ultrasonic sensor and all that stuff, i was so tired so i just took some code online, tested it and wen to bed, the next day i woke up, it worked, but then 7 hours later i come back home to edit the code for the ultrasonic sensor and to remove the cables connected to the motors and placing them back in, it does not work, i tried editing the code and everything, the serial monitor shows the ultrasonic sensor is working perfectly fine, the l298n motor driver lights up, but the dc motors won't move, i need help.

The code:

#include <SoftwareSerial.h>
#include <NewPing.h>


int TRIGGER_PIN = 10;
int ECHO_PIN = 11;


int ENA_PIN = 9;
int IN1_PIN = 8;
int IN2_PIN = 7;
int ENB_PIN = 3;
int IN3_PIN = 5;
int IN4_PIN = 4;

int MAX_DISTANCE = 200;

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);


void setup() {
  Serial.begin(9600);
  pinMode(ENA_PIN, OUTPUT);
  pinMode(IN1_PIN, OUTPUT);
  pinMode(IN2_PIN, OUTPUT);
  pinMode(ENB_PIN, OUTPUT);
  pinMode(IN3_PIN, OUTPUT);
  pinMode(IN4_PIN, OUTPUT);
}

void loop() {
  int distance = sonar.ping_cm();

  if (distance > 10) {
    Serial.print("Yes");
    digitalWrite(ENA_PIN, HIGH);
    digitalWrite(IN1_PIN, HIGH);
    digitalWrite(IN2_PIN, LOW);
    digitalWrite(ENB_PIN, HIGH);
    digitalWrite(IN3_PIN, HIGH);
    digitalWrite(IN4_PIN, LOW);
  } else {

    Serial.print("No");
    digitalWrite(ENA_PIN, HIGH);
    digitalWrite(IN1_PIN, LOW);
    digitalWrite(IN2_PIN, HIGH);
    digitalWrite(ENB_PIN, HIGH);
    digitalWrite(IN3_PIN, LOW);
    digitalWrite(IN4_PIN, HIGH);
  }
}

You never mention turning the power off to your project.

The power was on when i tested it

And it was on while you were removing and replacing the wires? If so, you can start your project over again because you killed the motor driver.

no it was off when i removed

My crystal ball is bad too.

my camera is bad

Recycle the dead 9V PP3 block battery and try using a 9-12V motor power supply, capable of a couple of Amperes. 6XAA will work.

1 Like

Hi, @ryanshamu

Have you tried the original working code?
Before you removed the cables.

Are you using a L298 IC or a module?

Thanks.. Tom.. :grinning: :+1: :coffee: :australia:

I am using the module

help

Hi,
Can you please post the original code that worked?

Can you please post a link to data/specs of the module?

Thanks.. Tom.. :grinning: :+1: :coffee: :australia:

1 Like

How are you powering this and can you post an annotated schematic showing exactly how you have wired it. This appears to be a hardware problem but without knowing what is there and how it is connected it is just guessing.

int enA = 9;
int in1 = 8;
int in2 = 7;
// Motor B connections
int enB = 3;
int in3 = 5;
int in4 = 4;

void setup() {
	// Set all the motor control pins to outputs
	pinMode(enA, OUTPUT);
	pinMode(enB, OUTPUT);
	pinMode(in1, OUTPUT);
	pinMode(in2, OUTPUT);
	pinMode(in3, OUTPUT);
	pinMode(in4, OUTPUT);
	
	// Turn off motors - Initial state
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}

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

// This function lets you control spinning direction of motors
void directionControl() {
	// Set motors to maximum speed
	// For PWM maximum possible values are 0 to 255
	analogWrite(enA, 255);
	analogWrite(enB, 255);

	// Turn on motor A & B
	digitalWrite(in1, HIGH);
	digitalWrite(in2, LOW);
	digitalWrite(in3, HIGH);
	digitalWrite(in4, LOW);
	delay(2000);
	
	// Now change motor directions
	digitalWrite(in1, LOW);
	digitalWrite(in2, HIGH);
	digitalWrite(in3, LOW);
	digitalWrite(in4, HIGH);
	delay(2000);
	
	// Turn off motors
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}

// This function lets you control speed of the motors
void speedControl() {
	// Turn on motors
	digitalWrite(in1, LOW);
	digitalWrite(in2, HIGH);
	digitalWrite(in3, LOW);
	digitalWrite(in4, HIGH);
	
	// Accelerate from zero to maximum speed
	for (int i = 0; i < 256; i++) {
		analogWrite(enA, i);
		analogWrite(enB, i);
		delay(20);
	}
	
	// Decelerate from maximum speed to zero
	for (int i = 255; i >= 0; --i) {
		analogWrite(enA, i);
		analogWrite(enB, i);
		delay(20);
	}
	
	// Now turn off motors
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.