Arduino教程(提高篇)——编写扩展库 

3D打印技术 /[硬件]
2017-01-06 11:26
Arduino教程.jpg
arduino教程(提高篇)——编写扩展库

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

完成这三步后,就将Motor1.cpp  Motor.h  keywords.txt三个文件放在一个新建文件夹Motor1里面,再将Motor1文件夹放在Arduino根目录libraries目录下面。这样你就可以重启arduino的IDE,使用你的扩展库了。
  1. 1.        #include <Motor1.h>
  2. 2.        void setup()
  3. 3.        {}
  4. 4.        void loop()
  5. 5.        {
  6. 6.        motor1 c;
  7. 7.        c.run(12,13,11,1,150);
  8. 8.          c.run(8,9,7,1,150);
  9. 9.        delay(2000);
  10. 10.        c.run(12,13,11,0,150);
  11. 11.          c.run(8,9,7,0,150);
  12. 12.          delay(2000);
  13. 13.        
  14. 14.        }
复制代码
之前遇到过的困难就是:如果扩展库里包含得有其他扩展库,例如我扩展库里面用到了软串口库SoftwareSerial就一定要在你使用之前,在arduino的IDE里面不仅要包含你自己编的扩展库,还得包含软串口库(就假如会在#include <Motor1.h>下面加一句#include <SoftwareSerial.h>)
声明:3D打印资源库(3dzyk)内网友所发表的所有内容及言论仅代表其本人,并不代表3D打印资源库(3dzyk)观点和立场;如对文章有异议或投诉,请联系kefu@3dzyk.cn。
标签:
Arduino教程(提高篇)——编写扩展库 
快速回复 返回顶部 返回列表