当前位置: 首页 > news >正文

灯带代码实现

#include "FastLED.h"            // FastLED库#define NUM_LEDS 60             // LED灯珠数量
#define DATA_PIN 3              // Arduino输出控制信号引脚
#define LED_TYPE WS2812         // LED灯带型号
#define COLOR_ORDER GRB         // RGB灯珠中红色、绿色、蓝色LED的排列顺序uint8_t max_bright = 100;       // LED亮度控制变量,可使用数值为 0 ~ 255, 数值越大则光带亮度越高CRGB leds[NUM_LEDS];            // 建立光带ledsvoid led_rainbow_loop(void){FastLED.clear();FastLED.show();delay(500);fill_solid(leds, 60, CRGB::Red);FastLED.show();delay(1000);                     // 等待1秒fill_solid(leds, 60, CRGB::Orange);FastLED.show();delay(1000);                     // 等待1秒fill_solid(leds, 60, CRGB::Yellow);FastLED.show();delay(1000);                     // 等待1秒fill_solid(leds, 60, CRGB::Green);FastLED.show();delay(1000);                     // 等待1秒fill_solid(leds, 60, CRGB::Cyan);FastLED.show();delay(1000);                     // 等待1秒fill_solid(leds, 60, CRGB::Blue);FastLED.show();delay(1000);                     // 等待1秒fill_solid(leds, 60, CRGB::Purple);FastLED.show();delay(1000);                     // 等待1秒
}void led_rainbow_flowing(void)
{FastLED.clear();FastLED.show();delay(500);int i = 0,loop_count = 0;if(NUM_LEDS%7 == 0){loop_count = NUM_LEDS/7;}else{loop_count = NUM_LEDS/7+1;}for(i=0; i<loop_count; i++){leds[i*7] = CRGB::Red;FastLED.show();delay(200);if(i*7+1>=NUM_LEDS) {break;}leds[i*7+1] = CRGB::Orange;FastLED.show();delay(200);if(i*7+2>=NUM_LEDS) {break;}leds[i*7+2] = CRGB::Yellow;FastLED.show();delay(200);if(i*7+3>=NUM_LEDS) {break;}leds[i*7+3] = CRGB::Green;FastLED.show();delay(200);if(i*7+4>=NUM_LEDS) {break;}leds[i*7+4] = CRGB::Cyan;FastLED.show();delay(200);if(i*7+5>=NUM_LEDS) {break;}leds[i*7+5] = CRGB::Blue;FastLED.show();delay(200);if(i*7+6>=NUM_LEDS) {break;}leds[i*7+6] = CRGB::Purple;FastLED.show();delay(200);if(i*7+7>=NUM_LEDS) {break;}}}void led_rainbow_static(void){FastLED.clear();FastLED.show();delay(500);fill_rainbow(leds, 60, 0, 15);FastLED.show();delay(1000);
}void setup() { LEDS.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);  // 初始化光带 FastLED.setBrightness(max_bright);                            // 设置光带亮度
}void loop() { while(1){led_rainbow_flowing();led_rainbow_static();led_rainbow_loop();}
}
#include <Adafruit_NeoPixel.h>//灯带库函数
#include<ctime>
#define PIN D1//定义引脚#define NUMPIXELS 29//定义led灯数量Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);//定义灯带(确定灯长,输出口,输出规则)int delayval2 = 40; 
void setup(){srand((unsigned)time(NULL));	//设置随机数pixels.setBrightness(25);               //设置灯带亮度pixels.begin();                        //NeoPixel输出准备数据引脚
}
void loop() {uint32_t light2c = pixels.Color(rand()%255,rand()%255,rand()%255);//设置灯带RGB颜色int light2bright = 10;for(int i=0;i<NUMPIXELS;i++){pixels.setPixelColor(i,light2c);//设置第i盏灯为light2c色)pixels.show();//更新灯带}while(true){light2bright+=10;pixels.setBrightness(light2bright);//设置灯带亮度pixels.show();delay(delayval2);if(light2bright>=200)break;}while(true){light2bright-=10;pixels.setBrightness(light2bright);pixels.show();delay(delayval2);if(light2bright<=10)break;}
}

相关文章:

灯带代码实现

#include "FastLED.h" // FastLED库#define NUM_LEDS 60 // LED灯珠数量 #define DATA_PIN 3 // Arduino输出控制信号引脚 #define LED_TYPE WS2812 // LED灯带型号 #define COLOR_ORDER GRB // RGB灯珠中红色、…...

Monocular arbitrary moving object discovery and segmentation 论文阅读

基本信息 题目&#xff1a;Monocular Arbitrary Moving Object Discovery and Segmentation 作者&#xff1a; 来源&#xff1a;BMVC 时间&#xff1a;2021 代码地址&#xff1a;https://github.com/michalneoral/Raptor Abstract 我们提出了一种发现和分割场景中独立移动的…...

ROS | 命名空间

文章目录 概述一、定义介绍二、原理解读1.命名空间2.调用规则概述 本节详细介绍了ROS中的命名空间机制原理和使用。 一、定义介绍 在ROS(Robot Operating System)中,命名空间是一种用于组织和区分节点、话题、服务和参数等资源的层次结构。命名空间使用斜线(/)作为分隔符…...

【中国数据】中国基础矢量数据(shp格式)

数据目录 数据举例 数据获取 专栏分享常用的地理空间数据&#xff0c;包括矢量数据、栅格数据、统计数据等&#xff0c;订阅专栏后&#xff0c;从私信查收专栏完整数据包&#xff0c;持续同步更新。...

Docker:创建主从复制的Redis集群

一、Redis集群 在实际项目里&#xff0c;一般不会简单地只在一台服务器上部署Redis服务器&#xff0c;因为单台Redis服务器不能满足高并发的压力&#xff0c;另外如果该服务器或Redis服务器失效&#xff0c;整个系统就可能崩溃。项目里一般会用主从复制的模式来提升性能&#x…...

c++ 智能指针

1. 起源 c++ 把内存的控制权对开发人员开放,让程序显式的控制内存,这样能够快速的定位到占用的内存,完成释放的工作。但是这样也会引发一些问题,也就是普通指针的隐患: 1.1 野指针 出现野指针的有几个地方 : 指针声明而未初始化,此时指针的将会随机指向内存已经被释放…...

【vue3】依赖注 provide、inject(父组件与儿子、孙子、曾孙子组件之间的传值)

一、基本用法&#xff1a; //父组件 import { ref, provide } from vue const radio ref<string>(red) provide(myColor,radio) //注入依赖//儿子组件、孙子组件、曾孙子组件 import { inject } from vue import type { Ref } from vue; const myColor inject<Ref&l…...

docker 部署tig监控服务

前言 tig对应的服务是influxdb grafana telegraf 此架构比传统的promethus架构更为简洁&#xff0c;虽然influxdb开源方案没有集群部署&#xff0c;但是对于中小型服务监控需求该方案简单高效 本文以docker-compose来演示这套监控体系的快速搭建和效果。 部署 docker-compos…...

ETL工具与数据处理的关系

ETL工具与数据处理之间存在密切的关系。数据处理是指对原始数据进行清洗、整理、加工和分析等操作&#xff0c;以便生成有用的信息和洞察力。而ETL工具则提供了一种自动化和可视化的方式来执行这些数据处理任务。通过ETL工具&#xff0c;用户可以定义数据抽取、转换和加载的规则…...

Flink几个性能调优

1 配置内存 操作场景 Flink是依赖内存计算&#xff0c;计算过程中内存不够对Flink的执行效率影响很大。可以通过监控GC&#xff08;Garbage Collection&#xff09;&#xff0c;评估内存使用及剩余情况来判断内存是否变成性能瓶颈&#xff0c;并根据情况优化。 监控节点进程的…...

后端工程进阶| 青训营笔记

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天 并发编程 协程Goroutine通道Channel锁Lock 并发基础 串行程序与并发程序&#xff1a;串行程序特指只能被顺序执行的指令列表&#xff0c;并发程序则是可以被并发执行的两个及以上的串行程序的综合体。并发程序与并行程序…...

EPPlus库的安装和使用 C# 中 Excel的导入和导出

安装 工具栏->NuGet 包管理器->管理解决方案的NuGet程序包 安装到当前项目中 使用 将 DataGridView 数据导出为Excel 首先&#xff0c;需要将数据DataGridView对象转换为DataTable private void btnExport_Click(object sender, EventArgs e) {// 1.将当前页面的data…...

深度学习使用Keras进行迁移学习提升网络性能

上一篇文章我们用自己定义的模型来解决了二分类问题,在20个回合的训练之后得到了大约74%的准确率,一方面是我们的epoch太小的原因,另外一方面也是由于模型太简单,结构简单,故而不能做太复杂的事情,那么怎么提升预测的准确率了?一个有效的方法就是迁移学习。 迁移学习其…...

越流行的大语言模型越不安全

源自&#xff1a;GoUpSec “人工智能技术与咨询” 发布 安全研究人员用OpenSSF记分卡对GitHub上50个最流行的生成式AI大语言模型项目的安全性进行了评估&#xff0c;结果发现越流行的大语言模型越危险。 近日&#xff0c;安全研究人员用OpenSSF记分卡对GitHub上50个最流…...

搜维尔科技:伦敦艺术家利用Varjo头显捕捉盲人隐藏的梦想

在伦敦举行的弗里泽艺术博览会上,与专业级虚拟现实/XR硬件和软件领域的全球领先者Varjo合作,展示一个突破性的混合现实艺术装置, 皇家国家盲人学会 (rnib),英国领先的视力丧失慈善机构。 这个名为"公共交通的私人生活"的装置是一个互动的声音和图像雕塑,旨在让有眼光…...

如何将html转化为pdf

html转换为pdf html2pdf.js库&#xff0c; 基于html2canvas和jspdf&#xff0c;只能打印2-3页pdf&#xff0c;比较慢&#xff0c;分页会截断html2canvas 只能打印2-3页pdf&#xff0c;比较慢&#xff0c;分页会截断 // canvasDom-to-image 不支持某些css属性Pdfmake html-to-p…...

ES6初步了解生成器

生成器函数是ES6提供的一种异步编程解决方案&#xff0c;语法行为与传统函数完全不同 语法&#xff1a; function * fun(){ } function * gen(){console.log("hello generator");}let iterator gen()console.log(iterator)打印&#xff1a; 我们发现没有打印”hello…...

飞桨大模型套件:一站式体验,性能极致,生态兼容

在Wave Summit 2023深度学习开发者大会上&#xff0c;来自百度的资深研发工程师贺思俊和王冠中带来的分享主题是&#xff1a;飞桨大模型套件&#xff0c;一站式体验&#xff0c;性能极致&#xff0c;生态兼容。 大语言模型套件PaddleNLP 众所周知PaddleNLP并不是一个全新的模型…...

【C++入门到精通】哈希 (STL) _ unordered_map _ unordered_set [ C++入门 ]

阅读导航 前言一、unordered系列容器二、unordered_map1. unordered_map简介⭕函数特点 2. unordered_map接口- 构造函数- unordered_map的容量- unordered_map的迭代器- unordered_map的元素访问- unordered_map的修改操作- unordered_map的桶操作 三、unordered_set1. unorde…...

创建 Edge 浏览器扩展教程(上)

创建 Edge 浏览器扩展教程&#xff08;上&#xff09; 介绍开始之前后续步骤开始之前1&#xff1a;创建清单 .json 文件2 &#xff1a;添加图标3&#xff1a;打开默认弹出对话框 介绍 在如今日益数字化的时代&#xff0c;浏览器插件在提升用户体验、增加功能以及改善工作流程方…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...