Arduino - 多线程库SCoop应用 之 时钟(计时器)
来源:互联网 发布:qq加速升级软件 编辑:程序博客网 时间:2024/05/16 05:03
使用该库的【时钟(又叫:计时器)】功能,首先要做三件事:
第一:引用库
#include “SCoop.h”
【库文件下载地址】
http://www.dfrobot.com.cn/community/forum.php?mod=attachment&aid=MTI4MzZ8MWFmMjk1MGF8MTQ1MDcwNTA2M3wwfD
第二:setup函数里,调用mySCoop.start()命令
void setup() {
mySCoop.start();
}
第三:loop函数里,调用yield()命令
void loop() {
yield();
}
接下来就可以使用【时钟】了。有两种定义方式,请继续往下看:
1、完整定义:定义线程的【setup】和【run】两个函数。
定义一个名字为“Tmr”的时钟:
defineTimer(Tmr,1000); //用defineTimer定义一个时钟,名为Tmr,周期为1000ms
void Tmr::setup() //定义该时钟的setup()函数,用于初始化设置。
{
//这里是时钟的setup函数的内容
}
void Tmr::run() //定义该时钟的run()函数,用于执行周期事件。
{
//这里是时钟的run函数的内容
}
2、快速定义:仅定义时钟的run函数
如果这个时钟不需要初始化setup,只需要周期事件run的话,可以直接使用defineTimerRun()快速定义该线程任务,如下:
defineTimerRun(Tmr,1000) //用defineTimerRun定义一个时钟,名为Tmr,周期为1000ms
{
//小技巧,如果某条件下,此时暂不需要执行周期事件,只需要在第一句返回,return 即可。可以用全局变量作为参考,从程序外部进行控制。
//这里是时钟的run函数的内容
//小技巧:如果此时需要动态修改时钟周期,只需要 schedule(新周期) 即可。可以用全局变量作为参考,从程序外部进行控制。
}
注意一点,使用此库之后,请使用sleep(ms)作为延时,不要用delay()了。
因为sleep(ms)只针对当前线程。而delay(ms)是针对全局的。
代码就不写了,参考 【Arduino - 多线程库SCoop应用 之 任务】。
- Arduino - 多线程库SCoop应用 之 时钟(计时器)
- Arduino - 多线程库SCoop应用 之 任务
- 51单片机(计时器+时钟应用)
- WEB应用之: 我的 JS 时钟+计时器+指令模型
- 计时器(2)之数字时钟
- Android之模拟时钟和数字时钟,计时器
- Android开发应用之计时器(TimerTask和Timer)
- CSS3练习之时钟计时器,3D旋转
- 时钟(图形界面+多线程)
- 多线程之倒计时器CountDownLatch及原理
- 计时器(3)机械时钟
- java时钟和计时器
- 关于计时器和时钟
- Arduino 网络时钟客户端
- Arduino LCD1602电子时钟
- 05 - 基本控件:Clock时钟(AnalogClock、DigitalClock)、Chronometer计时器
- Android 开发第六弹:简易时钟(计时器)
- Arduino使用时钟模块(Tiny RTC i2C)
- 为什么要用补码?
- 如何定位死循环或高CPU使用率(linux)
- 处理 java.lang.NullPointerException问题
- 结构体的4种初始化方式
- velpcity 循环的使用
- Arduino - 多线程库SCoop应用 之 时钟(计时器)
- 对js原型对象的理解
- Universal-Image-Loader系列1-配置使用
- leetcode -- Text Justification -- string操作的题目,思路简单,但是难以写对
- KMP算法解释
- android中MVP模式(一)
- Your Ruby version is 2.2.3, but your Gemfile specified 2.2.2
- Universal-Image-Loader系列2-源码分析
- Java CookBook Learning Day1st--HTTP (by Tim O'Brien)