所有教程由网友发布,仅供参考,请谨慎采纳。科创不对教程的科学性、准确性、可靠性负责。
转帖:arduino教程(提高篇)——编写扩展库
kc20382013/09/07电子技术 IP:广西
arduino教程(提高篇)——编写扩展库
XXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXml
鉴于很多童鞋对扩展库的喜好,并对它不清楚,作者谈谈自己的学习心得,望大家一起学习,共同进步。

首先以自己之前编写的小车的程序为例子:

(个人不喜欢像写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输入高低电平引脚
{                                                                                          //pwmpinPWM输入引脚,state为正反转,val输入调速值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

记得KEYWORDmotor之间用tab,不是空格。



完成这三步后,就将Motor1.cpp  Motor .h  keywords.txt三个文件放在一个新建文件夹Motor1里面,再将Motor1文件夹放在Arduino根目录libraries 目录下面。

这样你就可以重启arduinoIDE,使用你的扩展库了。


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

}

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


来自:电子信息 / 电子技术严肃内容:教程/课程
0
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也

想参与大家的讨论?现在就 登录 或者 注册

所属专业
所属分类
上级专业
同级专业
kc2038
学者 机友 笔友
文章
37
回复
268
学术分
1
2009/01/06注册,5年8个月前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}