学长 发表于 2013-5-3 13:36:37

脉冲产生器

本帖最后由 学长 于 2013-8-27 16:19 编辑

本脉冲产生器撰写时,因为未参考原作者写的文章 How to writelibraries for the Arduino? ,
以至於使用了 学长 所习惯比较不严谨的命名方式。

今天再上传一个完全以文章内所建议的方式,将全部命名修改。另建文章以示区别。
并感谢 群内、站内各位高手,如下
星空, 看海的日子, 夜, Boku , 小清新, 咖啡冻, darkorigin 等高手,
协助测试, 并提供宝贵建议。

请至另一帖子下载 改邪归自由版
http://www.geek-workshop.com/thread-4451-1-1.html


脉冲产生器

使用范例 及 CPP 在 压缩包内
/*
pulseGen.h - Library for Pulse Generator
Created by Andy Huang, May,2,2013.
Tradition Chinese Forum http://bbs.game7777.net
Tradition Chinese wiki http://www.game7777.net

特性:
1. 不停止 cpu 运行, 不使用 delay() delaymicroseconds() 。
2. 脉冲计数。
3. 指定脉冲 on off 时间, us 微秒。
4. 可同时使用多个引脚进行不同脉冲。

使用方式:
1. 建构时指定 引脚 on时间 off 时间
2. 每个循环呼叫 generator()
3. 暂时不需要脉冲时, 停止呼叫 generator() 即可
4. 重新需要输出脉冲时,必须先呼叫 init() 一次。时间及计数归零。

注意事项:
1. 暂停後重新启动脉冲, 如果未先呼叫 init() , 第一次所产生的脉冲时长最多可能达到71.5分钟。


*/


#ifndef pulseGen_h
#define pulseGen_h

#include "Arduino.h"

class pulseGen{
public:
        /* 建立 pulse
        /* @param pin                         第几引脚
        /* @param onInterval        脉冲 ON 的时间 微秒 us
        /* @param offInterval        脉冲 OFF 的时间 微秒 us
        */
        pulseGen(int pin,int onInterval, int offInterval);
       
        /* 重新初始化
        /* @param onInterval        脉冲 ON 的时间 微秒 us
        /* @param offInterval        脉冲 OFF 的时间 微秒 us
        */
        void init(int onInterval, int offInterval);
       
        /* 执行
        */
        void generator();
       

       
private:

        int _pin;                                                        //指定引脚
        unsigned long pulseOnInterval;                //on时间
        unsigned long pulseOffInterval;                //off时间
       
        unsigned long oldTime;                                //比对用
        unsigned long newTime;                                //比对用
       
        bool pulseState;                                        //脉冲状态

};

#endif

简单易用
再贴个范例好了

#include <pulseGen.h>
pulseGen pulse1(7,100,100); //七号引脚,产生 100us on 及 100us off 的脉冲

void setup() {

}

void loop() {
pulse1.generator();

}

554789575 发表于 2013-5-3 19:15:06

看不懂,但{:soso_e179:}

fangtaonj 发表于 2013-5-3 20:30:20

楼主你好!这个脉冲频率能控制吗?最好解释更详细些就好了!

darkorigin 发表于 2013-5-3 23:33:16

fangtaonj 发表于 2013-5-3 20:30 static/image/common/back.gif
楼主你好!这个脉冲频率能控制吗?最好解释更详细些就好了!

pulseGen(int pin,int onInterval, int offInterval);
第一个参数就是 引脚。 就是你要在哪个脚输出波形
第二个就是on的时间
第三个参数就是OFF的时间

后面2个参数可以直接控制频率啊。。。。。纳秒级的了。

darkorigin 发表于 2013-5-3 23:38:58

范例代码按照说明,好像有问题
不是说需要先调用INIT()么?
然后再generator() ;

还有就是翻译的时候,不要叫呼叫.....米国人叫"CALL" 繁体中文就叫"呼叫" 简体中文应该翻译成"调用" .

fangtaonj 发表于 2013-5-4 10:25:36

darkorigin 发表于 2013-5-3 23:33 static/image/common/back.gif
pulseGen(int pin,int onInterval, int offInterval);
第一个参数就是 引脚。 就是你要在哪个脚输出波形 ...

好啊!有兴趣,这几天研究一下!谢谢楼主!

万马奔腾 发表于 2013-5-4 10:47:25

pulseGen_h 在哪儿下载库文件呢?没有库文件不能用啊

darkorigin 发表于 2013-5-4 10:50:10

万马奔腾 发表于 2013-5-4 10:47 static/image/common/back.gif
pulseGen_h 在哪儿下载库文件呢?没有库文件不能用啊

很明显,你没有把楼主的帖子看到尾....人家那么大的附件挂在那里.....
还有就是提供了2个地址说~

万马奔腾 发表于 2013-5-4 10:52:07

darkorigin 发表于 2013-5-4 10:50 static/image/common/back.gif
很明显,你没有把楼主的帖子看到尾....人家那么大的附件挂在那里.....
还有就是提供了2个地址说~

库文件怎么使用啊,放在哪个位置啊

万马奔腾 发表于 2013-5-4 11:19:02

出现如此情况啊

darkorigin 发表于 2013-5-4 22:11:56

万马奔腾 发表于 2013-5-4 10:52 static/image/common/back.gif
库文件怎么使用啊,放在哪个位置啊

.......ARDUINO基本的教程。。。。所有的库文件。包括你以后买的各种器件的库文件,都要放进去的位置
\libraries
就是说你ARDUINO.EXE在的文件夹下有个LIBEARIES文件夹。。丢进去就好
不过不要多级目录,必须是下面有文件的。。。。嵌套一堆文件夹的没用

darkorigin 发表于 2013-5-4 22:19:24

还有,就是ARDUINO的版本问题。。。。很多库文件只支持少数几个版本,,,,,

chqiyi 发表于 2013-5-4 23:20:46

谢谢楼主和楼上,新手路过学习啦

学长 发表于 2013-5-6 22:30:18

darkorigin 发表于 2013-5-3 23:38 static/image/common/back.gif
范例代码按照说明,好像有问题
不是说需要先调用INIT()么?
然后再generator() ;


非常感谢你的议建议
我会尽量记住, 以後翻译时会更加小心。谢谢。

欢迎提出其他建议, 谢谢。
页: [1]
查看完整版本: 脉冲产生器