arduino教程(提高篇)——编写扩展库
鉴于很多童鞋对扩展库的喜好,并对它不清楚,作者谈谈自己的学习心得,望大家一起学习,共同进步。首先以自己之前编写的小车的程序为例子:(个人不喜欢像写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>) |
你可能喜欢
人工智能与3D打印技术结合,实现小型核反应
最新《Nature》:动态界面3D打印
石墨烯增强混凝土能否推动可持续建筑? UVA
杜克大学:新型无溶剂3D打印材料,可用于医
推荐课程
神奇的3D打印
SLA3D打印工艺全套培训课程 - 软件篇
3D打印月球灯视频教程 包括完整贴图建模流
【原创发布】Cura软件修改二次开发定制视频