L298N Driver Arduino Library

L298N Driver Arduino Library

网址

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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蔚蓝慕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值