打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

使用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);
          voidForward(int _speedLeftValue,int _speedRightValue); //前进
          voidBack(int _speedLeftValue,int _speedRightValue); //后退
          voidTurnLeft(int _speedRightValue);  //左转
          voidTurnRight(int _speedLeftValue); //右转
          voidTurnLeftOrigin(int _speedLeftValue,int _speedRightValue);    //原地左转
          voidTurnRightOrigin(int _speedLeftValue,int _speedRightValue);   //原地右转
          voidEStop();     //停止
          voidLStop();     //定义左边电机停转
          voidRStop();     //定义右边电机停转
          voidSetSpeedLeftFront(int _speedLeftValue);  //设置左边电机正转转速
          voidSetSpeedLeftBack(int _speedLeftValue);   //设置左边电机反转转速
          voidSetSpeedRightFront(int _speedRightValue);   //设置右边电机正转转速
          voidSetSpeedRightBack(int _speedRightValue);    //设置右边电机反转转速
          voidSetSpeedFront(int _speedLeftValue,int _speedRightValue);   //设置两个电机正转转速
          voidSetSpeedBack(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
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
微型直流电机控制基本方法 L298N模块
Arduino小车
我的第一个Labview和Arduino控制器的互动设计
Arduino智能循迹小车程序 8路循迹 左前右超声避障
【教程】手把手教你,让你的模型动起来
#创客秀#借助超声波传感器实现避障的智能小车 | 雷锋网
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服