I appreciate the crudeness of this but I have no other tools. Here is one half of what I have going on. Connecting the 5V terminal on the L298 to any of the IN pins works, but not with the Arduino in the way
And the code, which does print when prompted in coolterm
// L298N Motor Driver Pins
#define ENA 9 // Left side motor speed (PWM)
#define IN1 2 // Left side reverse
#define IN2 3 // Left side forward
#define ENB 10 // Right side motor speed (PWM)
#define IN3 4 // Right side reverse
#define IN4 5 // Right side forward
int speedVal = 150;
void setup() {
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
Serial.begin(9600);
while (!Serial);
delay(2000);
Serial.println("Ready: use w/a/s/d/x and </> to control");
}
void loop() {
if (Serial.available()) {
char command = Serial.read();
switch (command) {
case 'w': // Forward
forward();
Serial.println("Forward");
break;
case 's': // Reverse
backward();
Serial.println("Reverse");
break;
case 'a': // Left turn
turnLeft();
Serial.println("Left");
break;
case 'd': // Right turn
turnRight();
Serial.println("Right");
break;
case 'x': // Stop
stopMotors();
Serial.println("Stop");
break;
case '.': // Increase speed
speedVal = min(speedVal + 25, 255);
Serial.print("Speed: "); Serial.println(speedVal);
break;
case ',': // Decrease speed
speedVal = max(speedVal - 25, 0);
Serial.print("Speed: "); Serial.println(speedVal);
break;
default:
Serial.println("Invalid command");
}
}
}
void forward() {
digitalWrite(IN1, LOW); // Left reverse off
digitalWrite(IN2, HIGH); // Left forward on
digitalWrite(IN3, LOW); // Right reverse off
digitalWrite(IN4, HIGH); // Right forward on
analogWrite(ENA, speedVal);
analogWrite(ENB, speedVal);
}
void backward() {
digitalWrite(IN1, HIGH); // Left reverse on
digitalWrite(IN2, LOW); // Left forward off
digitalWrite(IN3, HIGH); // Right reverse on
digitalWrite(IN4, LOW); // Right forward off
analogWrite(ENA, speedVal);
analogWrite(ENB, speedVal);
}
void turnLeft() {
digitalWrite(IN1, HIGH); // Left reverse
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW); // Right forward
digitalWrite(IN4, HIGH);
analogWrite(ENA, speedVal);
analogWrite(ENB, speedVal);
}
void turnRight() {
digitalWrite(IN1, LOW); // Left forward
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH); // Right reverse
digitalWrite(IN4, LOW);
analogWrite(ENA, speedVal);
analogWrite(ENB, speedVal);
}
void stopMotors() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
analogWrite(ENA, 0);
analogWrite(ENB, 0);
}