0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino篇—FastLED库文件项目应用

冬至子 来源:X的创客课堂 作者:MRXY 2023-11-02 11:39 次阅读

课程目标

  • 单个LED的控制方法
  • LED的运动模式
  • LED的多种颜色控制

电路搭建

所需材料

ArduinoUNO * 1
RGB灯带30个LED * 1

电路连接

图片

程序编写

练习一:单个LED闪烁

代码方式:

/* 项目名称: WS2812单个LED闪烁
 * 项目时间:2022.04.21
 * 项目作者:MRX
 */
#include "FastLED.h"


#define LEDS_NUM 30    //定义led灯珠的数量
#define DATA_PIN 9     //UNO输出控制信号引脚
#define LED_TYPE WS2812 //LED灯带型号
#define COLOR_ORDER GRB //RGB灯珠中三种颜色LED的排序


uint8_t bright = 128;  //LED亮度控制,范围为0~255,数值越大LED越亮


CRGB leds[LEDS_NUM];   //创建灯带leds


void setup() {
  Serial.begin(9600);
  delay(1000);


  LEDS.addLeds(leds,LEDS_NUM);  //初始化灯带


  FastLED.setBrightness(bright);
}


void loop() {
    leds[0] = CRGB::Red;   //设置灯带中第一个灯珠颜色为红色,leds[0]为第一个
    FastLED.show();        //更新LED色彩
    delay(500);            //等待500毫秒

    leds[0] = CRGB::Black;   //熄灭灯带第一个灯珠
    FastLED.show();          //更新LED色彩
    delay(500);              //等待500毫秒
  }
}

相关知识:

**uint8_t:**其取值范围为0255,由于FastLED库做定义的LED亮度范围刚好在0255,从最优角度来看,这里使用这个变量类型刚好合适。

练习二:移动的LED

代码形式:

/* 项目名称: WS2812单个LED闪烁移动
 * 项目时间:2022.04.21
 * 项目作者:MRX
 */
#include "FastLED.h"


#define LEDS_NUM 30    //定义led灯珠的数量
#define DATA_PIN 9     //UNO输出控制信号引脚
#define LED_TYPE WS2812 //LED灯带型号
#define COLOR_ORDER GRB //RGB灯珠中三种颜色LED的排序


uint8_t bright = 128;  //LED亮度控制,范围为0~255,数值越大LED越亮


CRGB leds[LEDS_NUM];   //创建灯带leds


void setup() {
  Serial.begin(9600);
  delay(1000);


  LEDS.addLeds(leds,LEDS_NUM);  //初始化灯带


  FastLED.setBrightness(bright);
}


void loop() {
  for(int i = 0;i <= LEDS_NUM; i++ ){  
    leds[i] = CRGB::Red;   //设置灯带中第一个灯珠颜色为红色
    FastLED.show();        //更新LED色彩
    delay(50);            //等待50毫秒

    leds[i] = CRGB::Black;   //熄灭灯带第一个灯珠
    FastLED.show();          //更新LED色彩
    delay(50);              //等待50毫秒
  }
}

作用域符号”::“: 符号的前面一般是类名称,后面一般是该类的成员名称,C++为例避免不同的类有名称相同的成员而采用作用域的方式进行区分。

练习三:三色灯移动

代码形式:

/* 项目名称: WS2812单个LED三种颜色循环闪烁
 * 项目时间:2022.04.21
 * 项目作者:MRX
 */
#include "FastLED.h"


#define LEDS_NUM 30    //定义led灯珠的数量
#define DATA_PIN 9     //UNO输出控制信号引脚
#define LED_TYPE WS2812 //LED灯带型号
#define COLOR_ORDER GRB //RGB灯珠中三种颜色LED的排序


uint8_t bright = 128;  //LED亮度控制,范围为0~255,数值越大LED越亮


CRGB leds[LEDS_NUM];   //创建灯带leds


void setup() {
  Serial.begin(9600);
  delay(1000);


  LEDS.addLeds(leds,LEDS_NUM);  //初始化灯带


  FastLED.setBrightness(bright);
}


void loop() {
  for(int i = 0;i <= LEDS_NUM; i++ ){  
    leds[i] = CRGB::Red;   //设置灯带中第一个灯珠颜色为红色
    FastLED.show();        //更新LED色彩
    delay(50);            //等待500毫秒


    leds[i] = CRGB::Green;   //设置灯带中第一个灯珠颜色为绿色
    FastLED.show();        //更新LED色彩
    delay(50);            //等待50毫秒


    leds[i] = CRGB::Blue;   //设置灯带中第一个灯珠颜色为蓝色
    FastLED.show();        //更新LED色彩
    delay(50);            //等待50毫秒

    leds[i] = CRGB::Black;   //熄灭灯带第一个灯珠
    FastLED.show();          //更新LED色彩
    delay(50);              //等待50毫秒
  }
}

练习四:多个三色灯移动

代码形式:

/* 项目名称: WS2812多个LED循环移动
 * 项目时间:2022.04.21
 * 项目作者:MRX
 */
#include "FastLED.h"


#define LEDS_NUM 30    //定义led灯珠的数量
#define DATA_PIN 9     //UNO输出控制信号引脚
#define LED_TYPE WS2812 //LED灯带型号
#define COLOR_ORDER GRB //RGB灯珠中三种颜色LED的排序


uint8_t bright = 128;  //LED亮度控制,范围为0~255,数值越大LED越亮


CRGB leds[LEDS_NUM];   //创建灯带leds


void setup() {
  Serial.begin(9600);
  delay(1000);


  LEDS.addLeds(leds,LEDS_NUM);  //初始化灯带


  FastLED.setBrightness(bright);
}


void loop() {
  for(int i = 0;i <= 30; i++ ){  
    leds[i-1] = CRGB::Red;
    leds[i] = CRGB::Red;   //设置灯带中第一个灯珠颜色为红色
    leds[i+1] = CRGB::Red;
    FastLED.show();        //更新LED色彩
    delay(50);            //等待500毫秒


    leds[i-1] = CRGB::Green;
    leds[i] = CRGB::Green;   //设置灯带中第一个灯珠颜色为绿色
    leds[i+1] = CRGB::Green;
    FastLED.show();        //更新LED色彩
    delay(50);            //等待50毫秒


    leds[i-1] = CRGB::Blue;
    leds[i] = CRGB::Blue;   //设置灯带中第一个灯珠颜色为蓝色
    leds[i+1] = CRGB::Blue;
    FastLED.show();        //更新LED色彩
    delay(50);            //等待50毫秒

    leds[i-1] = CRGB::Black;
    leds[i] = CRGB::Black;   //熄灭灯带第一个灯珠
    leds[i+1] = CRGB::Black;
    FastLED.show();          //更新LED色彩
    delay(50);              //等待50毫秒
  }
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • LED控制
    +关注

    关注

    0

    文章

    39

    浏览量

    16903
  • RGB
    RGB
    +关注

    关注

    4

    文章

    798

    浏览量

    58462
  • Arduino
    +关注

    关注

    188

    文章

    6469

    浏览量

    186958
  • 三色灯
    +关注

    关注

    0

    文章

    6

    浏览量

    6201
  • WS2812
    +关注

    关注

    0

    文章

    32

    浏览量

    6170
收藏 人收藏

    评论

    相关推荐

    【mBot试用体验】使用Arduino IDE文件配置详解

    是使用Arduino IDE编程,下面来介绍一下Arduino 编程的相关文件配置和Arduino 使用的简单介绍:首先大家需要下载下面这
    发表于 12-25 01:29

    图书《arduino程序设计基础》

    Arduino… 1004.3.1编写头文件… 1004.3.2预处理命令… 1014.3.3宏定义… 1024.3.4文件包含… 1024.3.5条件编译… 1024.3.6版本
    发表于 06-12 14:37

    Arduino开发实战指南 AVR

    第一基础第1章初识Arduino第2章编写Arduino程序第3章Arduino的基本函数第4章Ar
    发表于 08-03 16:14

    ESP-IDF添加arduino作为component的方式创建项目,在使用arduno的时找不到头文件的原因?

    ,提示找不到对应的头文件。请问使用idf.py命令方式编译,怎样才能编译arduino,并且在项目中可调用。谢谢
    发表于 02-10 08:14

    ESP-IDF添加arduino作为component的方式创建项目,在使用arduno的时,找不到头文件怎么解决?

    对应的头文件。请问使用idf.py命令方式编译,怎样才能编译arduino,并且在项目中可调用。谢谢
    发表于 03-03 09:10

    ESP-IDF添加arduino作为component的方式创建项目,在使用arduno的时,找不到头文件的原因?

    ,提示找不到对应的头文件。请问使用idf.py命令方式编译,怎样才能编译arduino,并且在项目中可调用。
    发表于 03-08 09:09

    乐为物联网平台的接入Arduino文件

    乐为物联网平台的接入Arduino文件,方便开发调用。
    发表于 10-29 11:05 32次下载

    yeelink物联网平台的接入Arduino文件

    yeelink物联网平台的接入Arduino文件,方便开发调用。
    发表于 10-29 11:04 24次下载

    FastLED-3.1.0

    arduino 2812控制文件 arduino 2812控制文件
    发表于 12-03 18:02 6次下载

    鼠标轮编码器AD、Solidworks项目和STEP文件

    鼠标轮编码器AD、Solidworks项目和STEP文件,感兴趣的可以看看。
    发表于 05-11 16:33 0次下载

    arduino MPU-6050文件

    arduino MPU-6050文件Arduino+MPU6050+卡尔曼滤波自平衡车
    发表于 05-23 18:21 52次下载

    如何安装FastLED.io

    Internet上有许多非常酷的附加代码可供下载,这些代码Arduino IDE添加了功能。每个人都为IDE提供了一些独特的通信技能,使Arduino可以与独特的硬件模块“对话”
    的头像 发表于 11-15 10:38 1.1w次阅读

    Arduino实现电子时钟的文件资料合集免费下载

    本文档的主要内容详细介绍的是Arduino实现电子时钟的文件资料合集免费下载。
    发表于 06-02 08:00 6次下载
    <b class='flag-5'>Arduino</b>实现电子时钟的<b class='flag-5'>库</b><b class='flag-5'>文件</b>资料合集免费下载

    Arduino IED中安装TimeOne文件

    Arduino IED中安装TimeOne文件
    发表于 04-25 09:45 4次下载

    涂鸦智能物联网平台mcu方案arduino文件

    涂鸦智能物联网平台mcu方案arduino文件,使用可以轻松接入涂鸦平台,实现远程控制、OTA等平台能力
    发表于 04-28 17:43 5次下载