IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> PlatformIO使用Arduino[Task Scheduler]库(ESP8266) -> 正文阅读

[C++知识库]PlatformIO使用Arduino[Task Scheduler]库(ESP8266)

? ? ? ?在《PlatformIO使用Arduino[Ticker]库(ESP8266)》该篇笔记中,我们用Arduino环境下的Ticker库实现了4颗LED灯的定时闪烁。

PlatformIO使用Arduino[Ticker]库(ESP8266)_liguichuan的博客-CSDN博客本文介绍了在PlatformIO IDE中使用Arduino环境的[Ticker]库来编写NodeMCU(ESP8266)的示例程序。分别让4颗LED进行不同频率的闪烁。https://blog.csdn.net/liguichuan/article/details/122372094?spm=1001.2014.3001.5501? ? ? ?接下来,我们使用Arduino环境下的Task Scheduler库,采用任务调度的方式,来实现了9颗LED灯的闪烁。

Wiki - Gitee.comhttps://gitee.com/github_code/TaskScheduler/wikis/Home? ? ? ?写程序前,首先将需要用到的库安装到项目中去,请按下述截图进行安装:

?

? ? ? ? 接下来我们来写程序(\src\main.cpp):


#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <TaskScheduler.h> //包含此头文件,才能使用任务调度器

//定义LED灯接口
#define led1 16
#define led2 5
#define led3 4
#define led4 0
#define led5 2
#define led6 14
#define led7 12
#define led8 13
#define led9 15

Scheduler Sch;//创建一个任务调度器

//声明回调函数
void led1cb();
void led2cb();
void led3cb();
void led4cb();
void led5cb();
void led6cb();
void led7cb();
void led8cb();
void led9cb();

Task led1_task(100, TASK_FOREVER, &led1cb); //100MS闪烁一次
Task led2_task(200, TASK_FOREVER, &led2cb); //200MS闪烁一次
Task led3_task(300, TASK_FOREVER, &led3cb); //300MS闪烁一次
Task led4_task(400, TASK_FOREVER, &led4cb); //400MS闪烁一次
Task led5_task(500, TASK_FOREVER, &led5cb); //500MS闪烁一次
Task led6_task(600, TASK_FOREVER, &led6cb); //600MS闪烁一次
Task led7_task(700, TASK_FOREVER, &led7cb); //700MS闪烁一次
Task led8_task(800, TASK_FOREVER, &led8cb); //800MS闪烁一次
Task led9_task(900, TASK_FOREVER, &led9cb); //900MS闪烁一次


void setup()
{
  // put your setup code here, to run once:

  pinMode(led1,OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);
  pinMode(led9, OUTPUT);

  //初始化调度器
  Sch.init(); 

  //向调度器添加任务
  Sch.addTask(led1_task);
  Sch.addTask(led2_task);
  Sch.addTask(led3_task);
  Sch.addTask(led4_task);
  Sch.addTask(led5_task);
  Sch.addTask(led6_task);
  Sch.addTask(led7_task);
  Sch.addTask(led8_task);
  Sch.addTask(led9_task);

  //使能任务
  led1_task.enable();
  led2_task.enable();
  led3_task.enable();
  led4_task.enable();
  led5_task.enable();
  led6_task.enable();
  led7_task.enable();
  led8_task.enable();
  led9_task.enable();
}

void loop() {
  // put your main code here, to run repeatedly:
  Sch.execute();//执行调度器
  
}


//实现各任务的回调函数
void led1cb()
{
  if(digitalRead(led1)==1)
  {
    digitalWrite(led1, 0);
  }
  else
  {
    digitalWrite(led1, 1);
  }
}


void led2cb()
{
  if (digitalRead(led2) == 1)
  {
    digitalWrite(led2, 0);
  }
  else
  {
    digitalWrite(led2, 1);
  }
}


void led3cb()
{
  if (digitalRead(led3) == 1)
  {
    digitalWrite(led3, 0);
  }
  else
  {
    digitalWrite(led3, 1);
  }
}


void led4cb()
{
  if (digitalRead(led4) == 1)
  {
    digitalWrite(led4, 0);
  }
  else
  {
    digitalWrite(led4, 1);
  }
}


void led5cb()
{
  if (digitalRead(led5) == 1)
  {
    digitalWrite(led5, 0);
  }
  else
  {
    digitalWrite(led5, 1);
  }
}


void led6cb()
{
  if (digitalRead(led6) == 1)
  {
    digitalWrite(led6, 0);
  }
  else
  {
    digitalWrite(led6, 1);
  }
}


void led7cb()
{
  if (digitalRead(led7) == 1)
  {
    digitalWrite(led7, 0);
  }
  else
  {
    digitalWrite(led7, 1);
  }
}


void led8cb()
{
  if (digitalRead(led8) == 1)
  {
    digitalWrite(led8, 0);
  }
  else
  {
    digitalWrite(led8, 1);
  }
}


void led9cb()
{
  if (digitalRead(led9) == 1)
  {
    digitalWrite(led9, 0);
  }
  else
  {
    digitalWrite(led9, 1);
  }
}

? ? ? ?编译并上传程序到开发板,同时在面包板中连接好9颗LED灯到对应的引脚下上,即可看到如下效果:

led1------GPIO:16

led2------GPIO:5

led3------GPIO:4

led4------GPIO:0

led5------GPIO:2

led6------GPIO:14

led7------GPIO:12

led8------GPIO:13

led9------GPIO:15

? ? ? ?库中自带了一些示例,供学习参考(.pio\libdeps\nodemcuv2\TaskScheduler\examples):

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-14 01:47:11  更:2022-01-14 01:48:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:45:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码