L298N Driver Arduino Library

L298N Driver Arduino Library

url

L298N.h


#ifndef L298N_H
#define L298N_H

#include "Arduino.h"



class L298N
{
  public:
    L298N(uint8_t pinIN1, uint8_t pinIN2, uint8_t pinEnable);
    void setPWM(int command);
    void init();
    
    
    
  private:         
        const uint8_t _pinIN1;
        const uint8_t _pinIN2;
        const uint8_t _pinEnable;
};


#endif

L298N.cpp

// motor.cpp

#include "L298N.h"

L298N::L298N(uint8_t pinIN1, uint8_t pinIN2, uint8_t pinEnable): _pinIN1(pinIN1), _pinIN2(pinIN2), _pinEnable(pinEnable){
  
}


void L298N::init() {  
  pinMode(_pinIN1, OUTPUT);
  pinMode(_pinIN2, OUTPUT);
  pinMode(_pinEnable, OUTPUT);
  digitalWrite(_pinEnable, LOW); 
  }

  
void L298N::setPWM(int command) { 
  if(command > 0){
    analogWrite(_pinEnable, command);
    digitalWrite(_pinIN2, LOW);
    digitalWrite(_pinIN1, HIGH);
    }
  else if(command < 0){
    analogWrite(_pinEnable, abs(command));
    digitalWrite(_pinIN2, HIGH);
    digitalWrite(_pinIN1, LOW);
    } 
  else{
    analogWrite(_pinEnable, 0);
    digitalWrite(_pinIN2, LOW);
    digitalWrite(_pinIN1, LOW);
    } 
  }

example

/*  
 *  L298N Dual Channel driver library
 *  Version : 1.0
 *  Status  : Simple Library
 *  web: https://www.etronicskh.com/
 *  
 */


#include <L298N.h>

#define ENA 3
#define IN1 4
#define IN2 5

#define ENB 6
#define IN3 7
#define IN4 8

L298N motor1(IN1, IN2, ENA);
L298N motor2(IN3, IN4, ENB);

void setup() {
  Serial.begin(9600);
  motor1.init();
  motor2.init();
}

void loop() {
  motor1.setPWM(150); //motor1 forward with 150 PWM value
  motor2.setPWM(150); //motor2 forward with 150 PWM value
  delay(5000);
  
  motor1.setPWM(0);   //motor1 Stop
  delay(3000);
  
  motor1.setPWM(-200);   //motor1 backward with 200 PWM value
  motor2.setPWM(-200);   //motor2 backward with 200 PWM value
  delay(3000);
}

Guess you like

Origin blog.csdn.net/acktomas/article/details/129647282