这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【星空灯日志】超低配版快速搭建星空灯

共16条 1/2 1 2 跳转至

【星空灯日志】超低配版快速搭建星空灯

工程师
2021-05-17 22:43:01     打赏

白柴的推荐语:

旧物改造,( ^_^ )不错嘛!期待能看到小音箱的新面貌~

克服懒惰,加油


首先说明参考的是大神的fastled神库

github:https://github.com/FastLED/FastLED

本灯基于8266nodemcu+ws2812b+fastled库

       懒癌晚期患者原本计划APP+8266+音乐+炫酷的盒子,然后假期一直浪,平时又得做测试,然后一直拖到了截止前的一个半小时,看看如果有时间的话再撸一个app,首先放上一开始准备的东西。

image.png

      这个是上初中的时候一个亲戚送的小音箱,因为按键坏了加上一些器件老化,这次准备将按键换成由GPIO控制启停和更换音乐,这次没时间弄了,立个flag,有时间一定将这个复活。现在争分夺秒将以下部分跑起来。

image.png

还剩一小时25分钟,像ws2812的原理就不放了

点灯成功,接下来是实现逻辑

IMG_20210517_224052.jpg



高工
2021-05-17 23:15:48     打赏
2楼

总结的非常不错


工程师
2021-05-17 23:35:30     打赏
3楼

总结做的不错


工程师
2021-05-17 23:45:24     打赏
4楼

刚刚发现一个函数可以调节亮度,小助手再也不用担心闪瞎眼镜了


吐槽一下编译一次arduino要好久


工程师
2021-05-18 00:17:05     打赏
5楼

因为宿舍wifi密码太长还是某些玄学问题导致一直没办法连接上,脑壳疼,只能手机开wifi给电脑和8266了


工程师
2021-05-18 00:24:42     打赏
6楼

src=http___www.martyncurrey.com_wp-content_uploads_2017_06_nodemcudevkit_v1-0_PinMap_1200.jpg&refer=http___www.martyncurrey.jpg

放上8266管脚图。

快11点的时候发现自己重装系统以后没有装as,编译一下估计一个晚上过去了,只能临时找到关于8266局域网的教程,使用的是网络调试助手,如图所示:

image.png

打开后只需要修改协议类型即可,然后再8266里面填好本地ip地址和端口号即可,我设定的是abcd代表四种颜色。


工程师
2021-05-18 01:06:32     打赏
7楼

视频已经上传,等待审核

image.png


工程师
2021-05-18 01:08:14     打赏
8楼
#include <ESP8266WiFi.h>      //加入ESP8266wifi头文件
#include <FastLED.h>

#define LED_PIN 0 //LED信号线IN
#define NUM_LEDS 16 //级联了16颗LED
CRGB leds[NUM_LEDS];
#define LEDPIN 2                  
WiFiClient client;

const char *ssid     = "vivo";        //ssid,你家的wifi名称
const char *password = "a123456789";//wifi密码
const char *host = "0.0.0.0";   //改为上图所示的IP地址(改为你自己的)
const int tcpPort = 8080;//改为上图所示的本地端口号(改为你自己的)

void setup()
{
    Serial.begin(115200);    
    pinMode(LEDPIN,OUTPUT);
    delay(10);
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);
    FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
    FastLED.setBrightness(10);//可以设置全局亮度,调低亮度不刺眼
    WiFi.begin(ssid, password);//启动

     //在这里检测是否成功连接到目标网络,未连接则阻塞。
    while (WiFi.status() != WL_CONNECTED) 
    {
        Serial.println("WiFi connection failed......");
        delay(500);
    }

    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());  //WiFi本地IP
}

void loop()
{
    while (!client.connected())   //若未连接到电脑服务端,则esp8266客户端进行连接。
    {
        if (!client.connect(host, tcpPort))//实际上这一步就在连接服务端,如果连接上,该函数返回true
        {
            Serial.println("connection....");
            delay(500);
        }
    }

    while (client.available())//available()表示是否可以获取到数据
    {
        char val = client.read();//read()表示从网络中读取数据。
        //Serial.println(val);    //打印出来接收到的值
        //改变h即可改变颜色
        if(val=='a'){          
            for (int i = 0,h=200; i < NUM_LEDS; i++) {
            leds[i] = CHSV( h, 255, 255); 
            FastLED.show();
            }
        }
        if(val=='b'){          
            for (int i = 0,h=0; i < NUM_LEDS; i++) {
            leds[i] = CHSV( h, 255, 255); 
            FastLED.show();
            }
        }
        if(val=='c'){          
            for (int i = 0,h=100; i < NUM_LEDS; i++) {
            leds[i] = CHSV( h, 255, 255); 
            FastLED.show();
            }
        }
        if(val=='d'){         
            for (int i = 0,h=60; i < NUM_LEDS; i++) {
            leds[i] = CHSV( h, 255, 255); 
            FastLED.show();
            }
        }
    }
}

代码如上图所示


工程师
2021-05-18 01:21:02     打赏
9楼
原本的想法是写一个app,然后在阿里云搭建一个emqx服务器,将手机和8266接入互联网,可以实现远程控制,而不是局域网那么小的一块地方,奈何时间规划没做好,导致一拖再拖,最终只能搞一个符合要求的最低配置,看着贴在底下的代码真舒服,不知道这算不算完成了基本任务,通过这次活动也学到了很多东西,比如群里有大佬将8266接入了小爱同学,有的大佬搞出了炫酷的风格,通过学习大佬们的代码能学到很多知识,开拓自己的见解,同时也意识到时间规划的重要性,也算为这次活动画了一个小小的句号。

专家
2021-05-18 06:22:05     打赏
10楼

感谢分享


共16条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]