wifi智能氛围灯esp8266,ws2812灯带

没有录视频就直接上图吧,还是挺好看的。

 

硬件设备:esp8266nodemcu开发板(32也是可以的),ws2812灯带工3米共90灯珠,电源模块and杜邦线

需要用到blinker库,esp8266支持包,fastled库

点灯科技app界面配置 ;操作方法我就不讲解了。

 完整代码

#define BLINKER_WIFI
#include <Blinker.h>
#define RGB_1 "RGBKey"
#define BUTTON_1 "ButtonKey"
#include "FastLED.h"            // 此示例程序需要使用FastLED库
#define TEXTE_1 "TextKey"
#define NUM_LEDS 90             // LED灯珠数量
#define LED_DT 12                // Arduino输出控制信号引脚
#define LED_TYPE WS2812B         // LED灯带型号
#define COLOR_ORDER GRB         // RGB灯珠中红色、绿色、蓝色LED的排列顺序
uint8_t set=1 , set1;
uint8_t r1=255 ,g1=255 , b1=255 , L1=255  ;
uint8_t fromcolor=0 , tocolor=255 , h=20;
CRGB leds[NUM_LEDS];            // 建立光带leds                                 
uint8_t colorIndex , jiezou=10;
int a ;
 
char auth[] = "b1e872088004";
char ssid[] = "2-19公共wifi";
char pswd[] = "12345678";
 
int data[10] ={ 0 , 127 , 213, 40 , 200 , 80, 160, 220 , 100 , 20};
 
BlinkerButton Button1("guan");
BlinkerButton Button2("kai");
BlinkerRGB RGB1("RGB_1");
BlinkerButton Button3("ok");
BlinkerSlider Slider1("from");
BlinkerSlider Slider3("set");
BlinkerSlider Slider2("to");
BlinkerSlider Slider4("jiezou");
BlinkerText Text1(TEXTE_1);   
void button1_callback(const String & state) {
  BLINKER_LOG("get button state: ", state);
 
  if (state == "tap") 
  {set=0;
    Button1.color("#000000");
    Button1.text("关灯");
    Button2.text("打开白光");
     Button2.print("off");
    Button1.print("off");
    Text1.print("", "");
    Blinker.print("off","off") ;}
}

void button2_callback(const String & state) {
  BLINKER_LOG("get button state: ", state);
 
    if (state == "tap")
    {set=7;
    Button2.text("白光");
    Button2.print("on");}
}
void button3_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    
    if (state == "tap")
    {set=set1;
    Button3.text("已确定");
    Button3.print("on");
    }
}
 
void slider1_callback(int32_t value)
{
    BLINKER_LOG("get slider value: ", value);
    fromcolor  = value;
    
}
 
void slider2_callback(int32_t value)
{
    BLINKER_LOG("get slider value: ", value);
    tocolor  = value;
    
}
void slider4_callback(int32_t value)
{
    BLINKER_LOG("get slider value: ", value);
    jiezou  = value;
    
}
void slider3_callback(int32_t value)
{
    BLINKER_LOG("get slider value: ", value);
    set1  = value;
    Button3.text("点我确定");
    Button3.print("on");
    switch(set1){
      case 1 :Text1.print("单色模式", "可通过色盘选择指定颜色,同时可调节对应亮度");
               Blinker.print("on","ok") ;break;
      case 2 :Text1.print("彩色模式", "可通过两个HSV色调滑块改变颜色,亮度通过色盘调节");
               Blinker.print("on","ok") ;break; 
      case 3 :Text1.print("单色呼吸灯", "能够自动改变呼吸灯的颜色,灯光节奏滑块调节速度");
               Blinker.print("on","ok") ;break;
      case 4 :Text1.print("单色呼吸灯", "可以通过调色盘改变呼吸灯颜色 灯光节奏滑块调节速度");
               Blinker.print("on","ok") ;break;
       case 5 :Text1.print("流水灯", "可自动改变流水灯颜色 灯光节奏滑块调节速度");
               Blinker.print("on","ok") ;break;
       case 6 :Text1.print("跑马灯", "HSV色调滑块调节颜色,色盘调节亮度 灯光节奏滑块调节速度");
               Blinker.print("on","ok") ;break;                       
    }    
}
void rgb1_callback(uint8_t r_value, uint8_t g_value, 
                    uint8_t b_value, uint8_t bright_value)
{
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    BLINKER_LOG("R value: ", r_value);
    BLINKER_LOG("G value: ", g_value);
    BLINKER_LOG("B value: ", b_value);
    BLINKER_LOG("Rrightness value: ", bright_value);
    r1 = r_value ;
    g1 = g_value ;
    b1 = b_value ;
    L1 = bright_value;  
      
} 
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);
 
    Blinker.vibrate();
    
    uint32_t BlinkerTime = millis();
    Blinker.print(BlinkerTime);
    Blinker.print("millis", BlinkerTime);
}
 
void setup() {
 
    Serial.begin(115200);  
    
    BLINKER_DEBUG.stream(Serial); 
    // 初始化ws2812B灯带
    LEDS.addLeds<LED_TYPE, LED_DT, COLOR_ORDER>(leds, NUM_LEDS);  
    FastLED.setBrightness(255); 
    // 初始化blinker  
    Blinker.begin(auth , ssid ,pswd); 
      
    Blinker.attachData(dataRead);
    Button1.attach(button1_callback);
    Button2.attach(button2_callback);
    Button3.attach(button3_callback);
   
    RGB1.attach(rgb1_callback);
    Slider1.attach(slider1_callback);
    Slider2.attach(slider2_callback);
    Slider3.attach(slider3_callback);
    Slider4.attach(slider4_callback);
}
 
void loop() {
    Blinker.run();
    switch(set){
    case 0 :
      FastLED.clear(); 
      FastLED.show();
      break;
     case 7 :
     fill_solid(leds , NUM_LEDS , CRGB( 255,  61, 62  ));
      FastLED.setBrightness(L1); 
      FastLED.show();
      Blinker.delay(jiezou);
      break;
     case 1 :
      fill_solid(leds , NUM_LEDS , CRGB( r1,  g1, b1  ));
      FastLED.setBrightness(L1); 
      FastLED.show();
      Blinker.delay(jiezou);
      break;
    case 4 :
      for ( int i=30; i <= 255; i++)
       {
         fill_solid(leds , NUM_LEDS , CRGB( r1 ,g1 ,b1  ));
         FastLED.show();
         FastLED.setBrightness(i); 
         Blinker.delay(jiezou);
         Blinker.run();
        }
           for( int m=255 ;m >= 30; m--)
        {
           fill_solid(leds , NUM_LEDS , CRGB( r1 ,g1 ,b1  ));
           FastLED.show();
           FastLED.setBrightness(m); 
           Blinker.delay(jiezou);
           Blinker.run();
        }break;

        case 3 :
        h=h+31;
        for (uint8_t i=90; i <= 254 ; i++ ){
          fill_gradient(leds ,0 ,CHSV(h,255,i) ,NUM_LEDS-1, CHSV(h,255,i) , LONGEST_HUES);
          Blinker.run();
         FastLED.show();
         Blinker.delay(jiezou);
         
        }
           for(uint8_t m=254;m >= 90 ; m-- ){
          fill_gradient(leds ,0 ,CHSV(h,255,m) , NUM_LEDS-1 , CHSV(h,255,m) , LONGEST_HUES);
          Blinker.run();
         FastLED.show();
         Blinker.delay(jiezou);
         
        }break;
        case 2 :
        fill_gradient(leds ,0 ,CHSV(fromcolor,255,L1) ,NUM_LEDS-1 , CHSV(tocolor,255,L1) , LONGEST_HUES);
         FastLED.show();
         Blinker.run();
         break;
         case 5 :
           int n;
           uint8_t v ;
        h=h+40;
           for(n=0 ; n<=(NUM_LEDS-1) ;n++ ){
           fill_gradient(leds ,n ,CHSV(h,255,L1) ,n, CHSV(h,255,L1) , LONGEST_HUES);
              FastLED.show();
              Blinker.delay(jiezou);
             Blinker.run();
           }
           for(n=NUM_LEDS-1 ; n>=0;n-- ){
           fill_gradient(leds ,n ,CHSV(h+100,255,L1) ,n, CHSV(h+100,255,L1) , LONGEST_HUES);
              FastLED.show();
              Blinker.delay(jiezou);
             Blinker.run();
           }
          break; 
          case 6 :
          for( uint8_t n=0 ; n <= NUM_LEDS-10 ; n++){
            fill_gradient(leds ,n ,CHSV(fromcolor,255,L1) , n+9 , CHSV(tocolor,255,L1) , SHORTEST_HUES);
           FastLED.show();
           Blinker.delay(jiezou);
           Blinker.run();
           FastLED.clear();
          
           }
             for( uint8_t  h=NUM_LEDS-1 ;h >= 9 ;h--){
            fill_gradient(leds ,h ,CHSV(fromcolor,255,L1) , h-9 , CHSV(tocolor,255,L1) , SHORTEST_HUES);
           FastLED.show();
           Blinker.delay(jiezou);
          Blinker.run();
           FastLED.clear();

           }
          break;
          
         }  
}

版权声明:本文为CSDN博主「yaolei5」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yaolei5/article/details/118587264

生成海报
点赞 0

yaolei5

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

七、Arduino 串口的使用

Arduino与计算机通信最常用的方式就是串口通信 我们使用USB线连接Arduino Uno与计算机时,Arduino Uno会在计算机上虚拟出一个串口设备,此时两者之间便建立了串口连接。通过此连接,

Arduino与Proteus仿真实例-DHT11温度湿度传感器驱动仿真

DHT11温度湿度传感器驱动仿真 DHT11 是一款基本的超低成本数字温度和湿度传感器。 它使用电容式湿度传感器和热敏电阻来测量周围的空气,并在数据引脚上吐出数字信号(不需要模拟输入引脚)。 它使用起来相当简单,但需要仔细定时来抓取数据。

Arduino使用Esp32-cam开发版

首先你需要先准备一些硬件 1、Esp32-Cam开发版 2、TY-OV2640-v2.0摄像头 3、烧录底座,可以用USB-TTL,我用的是Esp8266的烧录底座 4、杜邦线母线x5,颜色不做要求 开始填坑 贴个大