• 灯带代码实现


    #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();
      }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    #include //灯带库函数
    #include
    #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;
      }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
  • 相关阅读:
    【外卖项目实战开发四】
    数据结构与算法复习:第三十一弹
    【论文阅读】Bag of Tricks for Efficient Text Classification
    39-Docker-部署Jenkins
    LLm微调使用的数据集
    目前看过最全的一线大厂面试题(题 + 详解),你所不知道的都在这
    【WINDOWS / DOS 批处理】关于标签的执行流程
    车载品牌音响被「软硬解耦」,扬声器赛道进入全新市场周期
    QT操作SQLite数据库_界面方式_增删改查
    如何编译java
  • 原文地址:https://blog.csdn.net/qq_34546805/article/details/134032329