Arduino编写自己的扩展库

鉴于很多童鞋对扩展库的喜好,并对它不清楚,作者谈谈自己的学习心得,望大家一起学习,共同进步。
首先以自己之前编写的小车的程序为例子:
(个人不喜欢像写arduino程序那样,每种参数都在最前面来个宏定义什么的,呵呵~~~)

void run(char pin1,char pin2,char pwmpin,char state,int val)
{
  pinMode(pin1,1);
  pinMode(pin2,1);
   pinMode(pwmpin,1); 
 if(state)
 {  
  analogWrite(pwmpin,val);
  digitalWrite(pin1,1);
  digitalWrite(pin2,0);
 }
 else
 {  
  analogWrite(pwmpin,val);
  digitalWrite(pin1,0);
  digitalWrite(pin2,1);
 }
}

void setup()
{
}
void loop()
{
  run(12,13,11,1,150);
  run(8,9,7,1,150);
  delay(2000);
  run(12,13,11,0,150);
  run(8,9,7,0,150);
  delay(2000);
}

好吧,我们这就开始扩展库的编写,第一步用记事本新建一个cpp主文件,命名为Motor1.cpp  

#include <WProgram.h>   
#include "motor1.h"    //include后面加空格(注意这些小细节)

motor1::motor1()
{
}//建一个构造函数,当然也可以带参数


void motor1::run(char pin1,char pin2,char pwmpin,char state,int val)    //建一个带参数的子函数 pin1 pin2输入高低电平引脚 {                                                                       //pwmpin为PWM输入引脚,state为正反转,va为l输入调速值0~255   pinMode(pin1,1);   pinMode(pin2,1);    pinMode(pwmpin,1); if(state) {     analogWrite(pwmpin,val);   digitalWrite(pin1,1);   digitalWrite(pin2,0); } else {     analogWrite(pwmpin,val);   digitalWrite(pin1,0);   digitalWrite(pin2,1); } }

第二步,编写.h文件   同样用记事本新建一个.h文件命名为Motor1.h

[mw_shl_code=cpp,true]#ifndef  MOTOR1_H_
#define MOTOR1_H_   //防止重复包含
class motor1
{
public:                      //共有部分
      motor1();
      void run(char pin1,char pin2,char pwmpin,char state,int val);     //假如motor1()或run()里定义了变量,就得写出私有部分                                
};                                                                      //private:相应的变量。所谓私有,就是不能给用户调用的。
#endif[/mw_shl_code]

第三步 建个keywords.txt文件  里面写出关键字  就是里面的公有部分函数等··

motor1        KEYWORD1
run        KEYWORD2

记得KEYWORD与motor之间用tab,不是空格。

 

下面是keywords.txt 的内容,其中#开头的是注释,完全可以不写。格式:word【tab】DESCRIPTION

 

word就是你要高亮的关键字接着1 个 tab 键 ,然后就是DESCRIPTION。

 

DESCRIPTION可以取的值:

 

KEYWORD1    高亮类名

 

KEYWORD2    高亮方法名

 

LITERAL1       高亮常量

 

完成这三步后,就将Motor1.cpp  Motor .h  keywords.txt三个文件放在一个新建文件夹Motor1里面,再将Motor1文件夹放在Arduino根目录libraries 目录下面。
这样你就可以重启arduino的IDE,使用你的扩展库了。

#include <Motor1.h>
void setup()
{}
void loop()
{
 motor1 c;
 c.run(12,13,11,1,150);
  c.run(8,9,7,1,150);
 delay(2000);
 c.run(12,13,11,0,150);
  c.run(8,9,7,0,150);
  delay(2000);

}

之前遇到过的困难就是:如果扩展库里包含得有其他扩展库,例如我扩展库里面用到了软串口库SoftwareSerial就一定要在你使用之前,在arduino的IDE里面不仅要包含你自己编的扩展库,还得包含软串口库(就假如会在#include <Motor1.h>下面加一句#include <SoftwareSerial.h>)

posted @ 2019-01-11 23:06  chenlife  阅读(551)  评论(0)    收藏  举报