分享

[原创]使用Arduino控制L298驱动电机(智能车)类库

 quasiceo 2015-08-19

使用Arduino控制L298驱动电机(智能车)类库

(2013-04-01 11:29:51)

分类: Arduino
很久以前买的L298,在网上找的一些类库都是L298N的用不上,参考着写了一个,有需要的拿去。

头文件:


#ifndef EMoto_h
#define EMoto_h

class EMoto
{
  private:
           int _leftFrontPin;     //定义左边电机前进针脚
           int _leftBackPin;      //定义左边电机后退针脚
           int _rightFrontPin;    //定义右边电机前进针脚
           int _rightBackPin;     //定义右边电机后退针脚
           int _speedLeftValue;   //定义左边电机转速值
           int _speedRightValue;  //定义右边电机转速值
           
  public:
           EMoto(int _lfPin,int _lbPin,int _rfPin,int _rbPin);
           void Forward(int _speedLeftValue,int _speedRightValue); //前进
           void Back(int _speedLeftValue,int _speedRightValue);  //后退
           void TurnLeft(int _speedRightValue);  //左转
           void TurnRight(int _speedLeftValue); //右转
           void TurnLeftOrigin(int _speedLeftValue,int _speedRightValue);     //原地左转
           void TurnRightOrigin(int _speedLeftValue,int _speedRightValue);    //原地右转
           void EStop();      //停止
           void LStop();      //定义左边电机停转
           void RStop();      //定义右边电机停转
           void SetSpeedLeftFront(int _speedLeftValue);   //设置左边电机正转转速
           void SetSpeedLeftBack(int _speedLeftValue);    //设置左边电机反转转速
           void SetSpeedRightFront(int _speedRightValue);    //设置右边电机正转转速
           void SetSpeedRightBack(int _speedRightValue);     //设置右边电机反转转速
           void SetSpeedFront(int _speedLeftValue,int _speedRightValue);    //设置两个电机正转转速
           void SetSpeedBack(int _speedLeftValue,int _speedRightValue);     //设置两个电机反转转速
};

#endif

cpp:

#include "EMoto.h"
#include "Arduino.h"
      
//EMoto类构造函数
EMoto::EMoto(int _lfPin,int _lbPin,int _rfPin,int _rbPin)
{
    _leftFrontPin = _lfPin;
    _leftBackPin = _lbPin;
    _rightFrontPin = _rfPin;
    _rightBackPin = _rbPin;
    pinMode(_leftFrontPin,OUTPUT);
    pinMode(_leftBackPin,OUTPUT);
    pinMode(_rightFrontPin,OUTPUT);
    pinMode(_rightBackPin,OUTPUT);
    EStop(); 
}

//前进子函数--左、右电机正转
void EMoto::Forward(int speedVal1,int speedVal2)
{
    EStop();
    SetSpeedFront(speedVal1,speedVal2);
 }

//后退子函数--左、右电机反转
void EMoto::Back(int speedVal1,int speedVal2)
{
    EStop();
    SetSpeedBack(speedVal1,speedVal2);
}

//左转
void EMoto::TurnLeft(int speedVal)
{
    EStop();
    SetSpeedRightFront(speedVal);
}

//右转
void EMoto::TurnRight(int speedVal)
{
    EStop();
    SetSpeedLeftFront(speedVal);
}

//原地左转
void EMoto::TurnLeftOrigin(int speedVal1,int speedVal2)
{
    EStop();
    SetSpeedRightFront(speedVal1);
    SetSpeedLeftBack(speedVal2);
}

//原地右转
void EMoto::TurnRightOrigin(int speedVal1,int speedVal2)
{
    EStop();
    SetSpeedLeftFront(speedVal1);
    SetSpeedRightBack(speedVal2);
}

//停车
void EMoto::EStop()
{
    RStop();
    LStop();
}

//左边电机停转
void EMoto::LStop()
{
  digitalWrite(_leftFrontPin,LOW);
  digitalWrite(_leftBackPin,LOW);
}

//右边电机停转
void EMoto::RStop()
{
  digitalWrite(_rightFrontPin,LOW);
  digitalWrite(_rightBackPin,LOW);
}

//输出PWM信号
void EMoto::SetSpeedLeftFront(int speedVal)
{
_speedLeftValue = speedVal;
analogWrite(_leftFrontPin,_speedLeftValue);
}

void EMoto::SetSpeedLeftBack(int speedVal)
{
_speedLeftValue = speedVal;
analogWrite(_leftBackPin,_speedLeftValue);
}

void EMoto::SetSpeedRightFront(int speedVal)
{
_speedRightValue = speedVal;
analogWrite(_rightFrontPin,_speedRightValue);
}

void EMoto::SetSpeedRightBack(int speedVal)
{
_speedRightValue = speedVal;
analogWrite(_rightBackPin,_speedRightValue);
}

void EMoto::SetSpeedFront(int speedVal1,int speedVal2)
{
_speedLeftValue = speedVal1;
_speedRightValue = speedVal2;
analogWrite(_leftFrontPin,_speedLeftValue);
analogWrite(_rightFrontPin,_speedRightValue);
}

void EMoto::SetSpeedBack(int speedVal1,int speedVal2)
{
_speedLeftValue = speedVal1;
_speedRightValue = speedVal2;
analogWrite(_leftBackPin,_speedLeftValue);
analogWrite(_rightBackPin,_speedRightValue);
}

色标文件:


#######################################
# Syntax Coloring Map For EMoto
#######################################
 
#######################################
# Datatypes (KEYWORD1) 数据类型关键字
#######################################
 
EMoto        KEYWORD1
 
#######################################
# Methods and Functions (KEYWORD2) 方法类型关键字
#######################################
 
Forward               KEYWORD2
Back                  KEYWORD2
TurnLeft              KEYWORD2
TurnRight             KEYWORD2
TurnLeftOrigin        KEYWORD2
BackTurnRightOrigin   KEYWORD2
EStop                 KEYWORD2
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约