灯带代码实现

news/2024/7/23 21:11:49 标签: 嵌入式硬件, arduino
#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];            // 建立光带leds

void 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;
  }
}


http://www.niftyadmin.cn/n/5120524.html

相关文章

CSS基础框盒模型:打造炙手可热的网页布局!

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一、是…

算法学习—双指针

算法学习 双指针 922. 按奇偶排序数组 II 给定一个非负整数数组 nums&#xff0c; nums 中一半整数是 奇数 &#xff0c;一半整数是 偶数 。 对数组进行排序&#xff0c;以便当 nums[i] 为奇数时&#xff0c;i 也是 奇数 &#xff1b;当 nums[i] 为偶数时&#xff0c; i 也…

文件包含漏洞(1),文件包含漏洞的利用原理

文件包含漏洞利用的原理 一, 本地文件包含 1. 漏洞利用条件: 在默认情况下, php.ini配置文件中 allow_url_fopenOn 是开启状态. 服务器php脚本中的 include include_once require require_once 等函数用于包含文件中的代码, 如果参数是用户可控的, 则可能被利用来执行系统命…

Banana Pi BPI-W3(ArmSoM-W3) RK3588编解码之MPP环境配置

1. 简介 瑞芯微提供的媒体处理软件平台&#xff08;Media Process Platform&#xff0c;简称 MPP&#xff09;是适用于瑞芯微芯片系列的 通用媒体处理软件平台。该平台对应用软件屏蔽了芯片相关的复杂底层处理&#xff0c;其目的是为了屏蔽不 同芯片的差异&#xff0c;为使用者…

家政预约上门app开发小程序同城服务

家政公司管理软件系统助您轻松管理各类家政业务&#xff0c;包括家政、保洁、维修等。 通过推广获客系统&#xff0c;您可以集成分销客户裂变、推广等&#xff0c;轻松获取更多客户。 活动营销系统支持各种营销活动&#xff0c;如充值卡、服务卡、秒杀、拼团等&#xff0c;有…

c语言练习96:输入任意正整数n,显示出1到n之间的所有完数输出。

输入任意正整数n&#xff0c;显示出1到n之间的所有完数输出。 题干输入任意正整数n&#xff0c;显示出1到n之间的所有完数输出。输入样例1000输出样例6123 28124714 4961248163162124248 #include<stdio.h> int main() {int n, i, s, t;scanf("%d", &t);…

vscode json文件添加注释报错

在vscode中创建json文件&#xff0c;想要注释一波时&#xff0c;发现报了个错&#xff1a;Comments are not permitted in JSON. (521)&#xff0c;意思是JSON中不允许注释 以下为解决方法&#xff1a; 在vscode的右下角中找到这个&#xff0c;点击 在出现的弹窗中输入json wit…

使用VisualStudio生成类图结构图for高效阅读代码

使用VisualStudio高效阅读代码 前言相关准备导入工程利用VisualStudio生成类图&#xff0c;结构体调用关系利用EnterpriseArchitect(EA)画时序图 前言 目前市面上代码阅读的IDE工具非常丰富&#xff0c;也各有千秋。由于工作经历原因&#xff0c;研发机经历过windows、Mac、Li…