进阶制作

进阶--编写扩展库

字号+ 作者:PLC工程师 来源:未知 2016-03-03 16:19 我要评论( )

鉴于很多童鞋对扩展库的喜好,并对它不清楚,作者谈谈自己的学习心得,望大家一起学习,共同进步。

鉴于很多童鞋对扩展库的喜好,并对它不清楚,作者谈谈自己的学习心得,望大家一起学习,共同进步。
首先以自己之前编写的小车的程序为例子:
(个人不喜欢像写arduino程序那样,每种参数都在最前面来个宏定义什么的,呵呵~~~)
  1. void run(char pin1,char pin2,char pwmpin,char state,int val)
  2. {
  3.   pinMode(pin1,1);
  4.   pinMode(pin2,1);
  5.    pinMode(pwmpin,1); 
  6. if(state)
  7. {  
  8.   analogWrite(pwmpin,val);
  9.   digitalWrite(pin1,1);
  10.   digitalWrite(pin2,0);
  11. }
  12. else
  13. {  
  14.   analogWrite(pwmpin,val);
  15.   digitalWrite(pin1,0);
  16.   digitalWrite(pin2,1);
  17. }
  18. }
  19.  
  20. void setup()
  21. {
  22. }
  23. void loop()
  24. {
  25.   run(12,13,11,1,150);
  26.   run(8,9,7,1,150);
  27.   delay(2000);
  28.   run(12,13,11,0,150);
  29.   run(8,9,7,0,150);
  30.   delay(2000);
  31. }
复制代码
好吧,我们这就开始扩展库的编写,第一步用记事本新建一个cpp主文件,命名为Motor1.cpp  
  1. #include <WProgram.h>   
  2. #include "motor1.h"    //include后面加空格(注意这些小细节)
  3.  
  4. motor1::motor1()
  5. {
  6. }                            //建一个构造函数,当然也可以带参数
  7. void motor1::run(char pin1,char pin2,char pwmpin,char state,int val)    //建一个带参数的子函数 pin1 pin2输入高低电平引脚
  8. {                                                                                          //pwmpin为PWM输入引脚,state为正反转,va为l输入调速值0~255
  9.   pinMode(pin1,1);
  10.   pinMode(pin2,1);
  11.    pinMode(pwmpin,1); 
  12. if(state)
  13. {  
  14.   analogWrite(pwmpin,val);
  15.   digitalWrite(pin1,1);
  16.   digitalWrite(pin2,0);
  17. }
  18. else
  19. {  
  20.   analogWrite(pwmpin,val);
  21.   digitalWrite(pin1,0);
  22.   digitalWrite(pin2,1);
  23. }
  24. }
复制代码
第二步,编写.h文件   同样用记事本新建一个.h文件命名为Motor1.h
  1. [mw_shl_code=cpp,true]#ifndef  MOTOR1_H_
  2. #define MOTOR1_H_   //防止重复包含
  3. class motor1
  4. {
  5. public:                      //共有部分
  6.       motor1();
  7.       void run(char pin1,char pin2,char pwmpin,char state,int val);     //假如motor1()或run()里定义了变量,就得写出私有部分                                
  8. };                                                                                                     //private:相应的变量。所谓私有,就是不能给用户调用的。
  9. #endif[/mw_shl_code]
复制代码
第三步 建个keywords.txt文件  里面写出关键字  就是里面的公有部分函数等··
  1. motor1        KEYWORD1
  2. run        KEYWORD2
复制代码
记得KEYWORD与motor之间用tab,不是空格。


完成这三步后,就将Motor1.cpp  Motor .h  keywords.txt三个文件放在一个新建文件夹Motor1里面,再将Motor1文件夹放在Arduino根目录libraries 目录下面。
这样你就可以重启arduino的IDE,使用你的扩展库了。
  1. #include <Motor1.h>
  2. void setup()
  3. {}
  4. void loop()
  5. {
  6. motor1 c;
  7. c.run(12,13,11,1,150);
  8.   c.run(8,9,7,1,150);
  9. delay(2000);
  10. c.run(12,13,11,0,150);
  11.   c.run(8,9,7,0,150);
  12.   delay(2000);
  13.  
  14. }
复制代码
之前遇到过的困难就是:如果扩展库里包含得有其他扩展库,例如我扩展库里面用到了软串口库SoftwareSerial就一定要在你使用之前,在arduino的IDE里面不仅要包含你自己编的扩展库,还得包含软串口库(就假如会在#include <Motor1.h>下面加一句#include <SoftwareSerial.h>)



如需更详细资料,如有好资源分享,请加入QQ交流群:214461008

欢迎阅读,欢迎转载,不用注明出处!本站只提供入门和进阶资料,做您学习的小伙伴!

老司机也欢迎光临指导!有好内容请加群:214461008 不要看声明了,看内容吧!

相关文章
  • Ethernet扩展卡(W5100)的应用

    Ethernet扩展卡(W5100)的应用

    2016-03-01 16:17

  • 进阶--韦根协议及其读取算法

    进阶--韦根协议及其读取算法

    2016-02-26 20:30

  • 进阶--修改Arduino串口缓冲区大小

    进阶--修改Arduino串口缓冲区大小

    2016-02-26 16:10

  • 进阶--串口的高级用法

    进阶--串口的高级用法

    2016-02-26 15:24

网友点评