技能梳理9@RGB+WS2812+ESP32
nodemcu联网检测当前时间,控制RGB灯在不同时间出现不同的渐变光影特效,新颖的方式提醒人时间在流逝
1、项目简介
2、实现逻辑
#初始化网络,初始化成功开始闪烁led
#根据时区获取网络时间
#在不同时间控制每一颗led的色彩,控制的时候是发一串数据,要把之前控制的再刷一遍,受限于ws2812控制协议,必须一串led都要刷新颜色和亮度
#早晨全绿,中午半绿半红,晚上全红
3、应用场景
#室外提示时间
#室内趣味挂件
4、核心代码梳理
Freenove_ESP32_WS2812 strip = Freenove_ESP32_WS2812(LEDS_COUNT, LEDS_PIN, CHANNEL, TYPE_GRB);u8 m_color[5][3] = { {255, 0, 0}, {0, 255, 0}, {0, 0, 255}, {255, 255, 255}, {0, 0, 0} };const char* ntpServer = "pool.ntp.org";
const long gmtOffset_sec = 8*3600;//这里采用UTC计时,中国为东八区,就是 8*60*60
const int daylightOffset_sec = 0;//同上 void printLocalTime()
{struct tm timeinfo;if(!getLocalTime(&timeinfo)){Serial.println("Failed to obtain time");return;}Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
}void led_all(void)
{for (int i = 0; i < LEDS_COUNT; i++) {strip.setLedColorData(i, r_value, g_value, b_value);strip.show();delay(delayval);}
}void setup(void)
{strip.begin();strip.setBrightness(150);//USARTSerial.begin(115200);pinMode(LED_BUILTIN, OUTPUT);Serial.print("START");WiFi.begin(ssid, password);//连接到网络while (WiFi.status() != WL_CONNECTED) {//等待网络连接成功delay(500);Serial.print(".");}Serial.println("");Serial.println("WiFi connected");Serial.print("IP address: ");Serial.println(WiFi.localIP());//打印模块IP//init and get the timeconfigTime(gmtOffset_sec, daylightOffset_sec, ntpServer);printLocalTime();
}void loop(void)
{//LEDdigitalWrite(LED_BUILTIN, HIGH);delay(200);digitalWrite(LED_BUILTIN, LOW);delay(200);//delay(500);//time/// struct tm timeinfo;if(!getLocalTime(&timeinfo)){Serial.println("Failed to obtain time");}//早晨全绿 6:00 //每3分钟变一个if((timeinfo.tm_hour >= 6) && (timeinfo.tm_hour <= 10)) //6:00- 10:00{test_value = (timeinfo.tm_hour-6)*20 + (timeinfo.tm_min/3);}else if((timeinfo.tm_min <= 40) && (timeinfo.tm_hour == 11)) //11:00- 11:40{test_value = 113 + (timeinfo.tm_min/3); //113 + 40/3 }else if((timeinfo.tm_min > 40) && (timeinfo.tm_hour == 11)) //11:40- 12:00{test_value = 128 + (timeinfo.tm_min/3); }if((timeinfo.tm_hour == 6) && (timeinfo.tm_min == 0)) //6:00{test_value = 0;}//中午半绿半红 11:40 128 128if((timeinfo.tm_hour == 11) && (timeinfo.tm_min == 40)) //11:40{test_value = 128;}if((timeinfo.tm_hour >= 12) && (timeinfo.tm_hour <= 20)) 12:00- 20:00{test_value = 128 + (timeinfo.tm_hour-12)*13 + (timeinfo.tm_min/3);}else if((timeinfo.tm_min <= 30) && (timeinfo.tm_hour == 21)) //21:00- 21:30{test_value = 124 + (timeinfo.tm_min/10); //255 + 30/3}//晚上全红 21:30 //每5分钟一个if((timeinfo.tm_hour == 21) && (timeinfo.tm_min == 30))//21:30{test_value = 255;}//凌晨切换if(timeinfo.tm_hour == 24)//24:00{test_value = 0;}r_value = test_value;g_value = 255 - test_value;//ws2812/// led_all();}
5、部分参考资料
#使用的是5050 SMD RGB LED内置改进版WS2811 ic 256灰度 8位/色彩
6、注意事项
#凌晨的时候灯带从全红变为全绿
#只控制色彩,亮度设置为固定值,亮度也是255级可调
#控制led的时候主要要在库函数里面定义好led的个数
#因为使用的是ESP32自带的控制WS2812的库函数,所以对ws2812不需要太了解
#esp32开发的环境是vscode+platformio,具体可查看往期博客
完整可运行项目地址
或 点击下方”大饼匠人“卡片,关注并回复"9"免费下载开发资料
技能梳理9@RGB+WS2812+ESP32相关推荐
- 【业务建模_5】数据分析师技能梳理
[业务建模_5]数据分析师技能梳理 大纲 1.固定报表提炼 产品侧 活动侧 重点功能侧 2.固有分析模块工具 事件+多维度 漏斗+多维度 留存+多维度 3.临时需求+SQL模板+临时报表 4.用户画像 ...
- WS2812+ESP32 diy拾音灯+各种灯效 通过Blinker控制
WS2812+ESP32 diy拾音灯+各种灯效 通过Blinker控制 更新说明: 软件版本:2.0.0 2023.02.08 修复软件开机自启动相关bug,具体为bat文件创建快捷方式时起始路径错 ...
- 技能梳理37@stm32+按键+光耦+锁存+串行转并行+继电器
技能梳理37@stm32+按键+光耦+锁存+串行转并行+继电器 1.项目简介 2.实现逻辑 3.应用场景 #主从机有线控制 #开关操作 4.核心代码梳理 //根据按下的按键执行相应的操作 void h ...
- 技能梳理6@NODEMCU+BH1750+DS18B20+DHT11+PWM电机+ONENET
智慧鱼缸,检测土壤湿度,检测室内温湿度和光照,检测鱼缸水位,检测鱼缸温度,各种蜂鸣器报警(水温超20-24)和控制舵机(步进电机),控制两个水泵,一个需要是从植物里面抽水到鱼缸,另外一个是供养氧作用, ...
- 技能梳理7@stm32+OLED+flash掉电保存+按键
学校违纪分数记录,按键,1.3寸OLED显示,数据掉电保存 1.项目简介 2.实现逻辑 #如上图为显示屏显示内容 #三个物理按键,一个是选择对哪一项进行控制,两个是加减对应项的分数 #控制范围±10, ...
- 技能梳理23@语音模块+stm32+nfc
小车nfc模块检测不同卡片播发不同声音,和上一个设计差不多,就是实现一个类似公交车刷卡播报到哪一战的效果 1.项目简介 2.实现逻辑 #见简介 3.应用场景 #公交站到站播报 4.核心代码梳理 //全 ...
- 技能梳理3@NODEMCU+串口屏+随机抽签+物理按键
串口屏抽签,类似抽奖,物理按键选中和清除,mcu是stm32 1.项目简介 2.实现逻辑 #屏幕页面放58个图标控件,每个图标控件上显示一个人名,控件下面位置再放一个控件,可在语数外物化生6个字(6个 ...
- 技能梳理18@stm32+柔性墨水屏+薄膜按键+二维码
薄膜压力按键控制mos开关,切换给柔性墨水屏vcc供电方式,单片机控制vcc切换图像,其中有可以扫描的二维码 1.项目简介 2.实现逻辑 #有两个薄膜按键,一个控制墨水屏供电方式(其实就是一个继电器) ...
- 技能梳理14@stm32+esp8266+ds18b20+红外传感器+烟雾传感器+CO传感器+蜂鸣器
画板子,有至少8个io口(分别连ds18b20.红外传感器.烟雾传感器.CO传感器,后面3个传感器都是检测到就发高电平),2个串口,1个蜂鸣器,nbiot用的YED-C724 核心板(AIR724) ...
最新文章
- FastQC结果解读
- C#中导出Excel报表的方法
- 国内首本Android开发图书之双剑
- 程序员书单_UML篇
- 人工智能 | 增强小目标检测(Augmentation for small object detection)
- 天刀现在最新服务器,天涯明月刀8.21服务器更新公告
- 同步本地远程分支 git remote prune origin
- php正则学习,php中正则表达式的学习及应用
- P(A)P(B|A)=P(B)P(A|B)
- 数据库某个字段增加或减少数量
- java实现红包要多少钱_Java实现抢红包功能
- python gps坐标系utm坐标系等不同坐标系相互转换详细教材
- 带你认识PLC输入的源型与漏型接法
- IPA-蛋白质组、代谢组、转录组分析利器
- 银行面试之MySQL数据库
- 从零开始写一个Jison解析器(3/10):良好的开端是成功的一半——《政治学》 (亚里士多德)
- 编译《视觉SLAM十四讲》ch5里joinmap出现 ***/anaconda3/lib/libpng16.so.16:‘inflateValidate@ZLIB_1.2.9’未定义的引用
- 计算机内存容量影响游戏的吗,内存容量对整机游戏性能影响有多大?看完秒懂...
- oracle vba 数组_Excel VBA 连接各种数据库(二) VBA连接Oracle数据库
- 【codeforces 527A】Playing with Paper