Toggle navigation
科创
{{ getSearchSuggestionLabel(suggestion) }}
{{ part.text }}
查看更多
登录
 
注册
电波
论坛
专栏
应用
登录
注册
{{ getSearchSuggestionLabel(suggestion) }}
{{ part.text }}
查看更多
论坛
>
电子信息
>
电子技术
>
嵌入式
文号
t60400
阅读
2854
回复
0
收藏
1
所有教程由网友发布,仅供参考,请谨慎采纳。科创不对教程的科学性、准确性、可靠性负责。
转帖:arduino教程(提高篇)——编写扩展库
kc2038
2013/09/07
电子技术
IP:广西
arduino
教程(提高篇)——编写扩展库
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
鉴于很多童鞋对扩展库的喜好,并对它不清楚,作者谈谈自己的学习心得,望大家一起学习,共同进步。
首先以自己之前编写的小车的程序为例子:
(个人不喜欢像写
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,
不是空格。
完成这三步后,就将
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>
)
来自:
电子信息
/
电子技术
/
嵌入式
0
0
全部
只看作者
全部
只看作者
在列表中查看
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
编辑
删除
{{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
保存
取消
我也是有底线的
保存中...
保存