课程目标
单个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]; //创建灯带ledsvoid 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]; //创建灯带ledsvoid 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]; //创建灯带ledsvoid 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]; //创建灯带ledsvoid 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毫秒 }}
鸿蒙OS与Lite OS的区别是什么
三星S21 Ultra影像得分121分 不如三星S20 Ultra
胭脂谷微器件正在生产检测新冠的生物传感器
运算放大器的噪声的来源
美图手机T9评测 更完美的美颜自拍体验
Arduino篇—FastLED库文件项目应用
QT在Linux嵌入式设备上的系统配置
11月19号DSP周末班热招中 -达盛科技培训
12月中国联通4G用户本月净增112.3万户,努力推动高质量发展
大疆灵眸手机云台2代:功能升级价格却低了一半
数字化转型趋势行业增长蓄势待发
汾酒与华为签署战略合作协议,共同探索酒业数字化转型发展
8家“优浪AI智谷科技产业联盟”与湘江智谷·人工智能科技城签署了入驻协议
5G与VR技术的应用,对旅游行业有着深刻影响
机器学习和人工智能有什么区别
40年后C++为何仍然当今使用最广泛的编程语言之一?
STM8L051F3的TIM2相关知识
AI录音笔引起怎样的新潮流
关于未来即将出现的GaN创新技术与其对基站设计和发展的影响
2020全球智能手机面板市场报告发布:京东方获销量王