灯带代码实现

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

Arduino是一个开源的电子原型平台,可以通过编写代码进行控制和交互。在控制灯带的时候,我们需要先了解灯带的类型和接线方法。 对于常见的WS2812B等可编程灯带(也叫NeoPixel灯带),我们需要简单的电路连接和相应的代码。 首先,我们需要将Arduino的Data引脚连接到灯带的数据输入端。同时连接Arduino的GND(地线)到灯带的GND,以保证共地。然后,将灯带的VCC(电源正极)连接到Arduino的5V,如果你使用3.3V供电的Arduino需要连接到3.3V。 接下来,我们需要编写代码。 首先,我们需要引用Adafruit_NeoPixel,可以通过搜索和下载安装。然后,在代码开头部分使用#include语句引入文件。 接着,我们需要定义灯带的数据引脚和灯带LED数量。根据实际连接情况和需要控制灯带数量进行设置。例如,可以使用以下语句定义引脚和灯带数目: ``` #define PIN 6 #define NUM_LEDS 30 ``` 然后,在setup函数中进行初始化设置。使用Adafruit_NeoPixel的begin函数初始化灯带,同时设置颜色格式为RGB。例如: ``` void setup() { strip.begin(); strip.setBrightness(50); //设置亮度 strip.show(); //刷新灯带 } ``` 接着,我们可以在loop函数中编写控制灯带代码。比如,可以使用setPixelColor函数设置每个LED的颜色,再使用show函数刷新灯带。例如: ``` void loop() { for (int i = 0; i < NUM_LEDS; i++) { strip.setPixelColor(i, 255, 0, 0); //设置为红色 strip.show(); delay(100); //延迟100毫秒 strip.setPixelColor(i, 0, 0, 0); //关闭LED } } ``` 以上是基本的控制灯带代码,你可以根据需要进行更多的自定义设置,如实现呼吸灯等效果。最后,将代码上传到Arduino板上并运行即可控制灯带的亮灭和颜色。 请注意,以上代码只是一个简单示例,具体的代码实现方式还需要根据具体的灯带类型、需求和接线情况来确定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值