课程目标
- 单个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
+关注
关注
4文章
798浏览量
58463 -
Arduino
+关注
关注
188文章
6469浏览量
186962 -
三色灯
+关注
关注
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
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
如何安装FastLED.io库
Internet上有许多非常酷的附加代码库可供下载,这些代码库为Arduino IDE添加了功能。每个人都为IDE提供了一些独特的通信技能,使Arduino可以与独特的硬件模块“对话”
涂鸦智能物联网平台mcu方案arduino库文件
涂鸦智能物联网平台mcu方案arduino库文件,使用库可以轻松接入涂鸦平台,实现远程控制、OTA等平台能力
发表于 04-28 17:43
•5次下载
评论