下一步,准备用网页滑块去控制不同天气下的颜色显示并保存进EEPROM,以达到自定义颜色的目的。

天气代码有二十多种,每种都有红绿蓝三个数值,因此要存进EEPROM的东西非常杂乱。

身为强迫症,这种情况是不允许的。

于是把每种天气的红绿蓝三数值整合到一个JSON串中,无论是网页交互还是保存进EEPROM都是JSON串,需要用到的时候解析即可,一下子整洁了不少。

大致的代码如下:

uint32_t color;//颜色
int tianqi = 0;//天气代码。
String rgbJsonQing = "{\"r\":255,\"g\":255,\"b\":150}";
String rgbJsonDuoyun = "{\"r\":255,\"g\":255,\"b\":225}";
String rgbJsonYin = "{\"r\":0,\"g\":221,\"b\":255}";
String rgbJsonZhenyu = "{\"r\":0,\"g\":186,\"b\":255}";
String rgbJsonLeiZhenYu = "{\"r\":255,\"g\":242,\"b\":0}";
String rgbJsonBingBao = "{\"r\":255,\"g\":242,\"b\":0}";
String rgbJsonXiaoYu = "{\"r\":0,\"g\":175,\"b\":255}";
String rgbJsonZhongYu = "{\"r\":0,\"g\":135,\"b\":255}";
String rgbJsonDaYu = "{\"r\":48,\"g\":0,\"b\":255}";
String rgbJsonBaoYu = "{\"r\":211,\"g\":0,\"b\":255}";
String rgbJsonDaBaoYu = "{\"r\":255,\"g\":0,\"b\":201}";
String rgbJsonTeDaBaoYu = "{\"r\":255,\"g\":0,\"b\":160}";
String rgbJsonDongYu = "{\"r\":255,\"g\":242,\"b\":0}";
String rgbJsonYuJiaXue = "{\"r\":255,\"g\":242,\"b\":0}";
String rgbJsonXiaoXue = "{\"r\":0,\"g\":175,\"b\":255}";
String rgbJsonZhongXue = "{\"r\":48,\"g\":0,\"b\":255}";
String rgbJsonDaXue = "{\"r\":255,\"g\":0,\"b\":201}";
String rgbJsonBaoXue = "{\"r\":255,\"g\":0,\"b\":160}";
String rgbJsonFuChen = "{\"r\":255,\"g\":191,\"b\":0}";
String rgbJsonShaChenBao = "{\"r\":255,\"g\":124,\"b\":0}";
String rgbJsonWuMai = "{\"r\":255,\"g\":68,\"b\":0}";
String rgbJsonTaiFeng = "{\"r\":255,\"g\":0,\"b\":0}";
void loop() {
//不同天气,赋值不同颜色。这里可以自己任意修改。if (tianqi == 0 || tianqi == 1 || tianqi == 2 || tianqi == 3) //晴{formatRGBFromJson(rgbJsonQing);}else if (tianqi == 4 || tianqi == 5 || tianqi == 6 || tianqi == 7 || tianqi == 8) //多云{formatRGBFromJson(rgbJsonDuoyun);}else if (tianqi == 9) //阴{formatRGBFromJson(rgbJsonYin);}else if (tianqi == 10) //阵雨{formatRGBFromJson(rgbJsonZhenyu);}else if (tianqi == 11) //雷阵雨{formatRGBFromJson(rgbJsonLeiZhenYu);}else if (tianqi == 12) //冰雹{formatRGBFromJson(rgbJsonBingBao);}else if (tianqi == 19) //冻雨{formatRGBFromJson(rgbJsonDongYu);}else if (tianqi == 20) //雨夹雪{formatRGBFromJson(rgbJsonYuJiaXue);}else if (tianqi == 13) //小雨{formatRGBFromJson(rgbJsonXiaoYu);}else if (tianqi == 22) //小雪{formatRGBFromJson(rgbJsonXiaoXue);}else if (tianqi == 14) //中雨{formatRGBFromJson(rgbJsonZhongYu);}else if (tianqi == 15) //大雨{formatRGBFromJson(rgbJsonDaYu);}else if (tianqi == 23) //中雪{formatRGBFromJson(rgbJsonZhongXue);}else if (tianqi == 16) //暴雨{formatRGBFromJson(rgbJsonDaYu);}else if (tianqi == 17 ) //大暴雨{formatRGBFromJson(rgbJsonBaoYu);}else if (tianqi == 24) //大雪{formatRGBFromJson(rgbJsonDaXue);}else if (tianqi == 18) //特大暴雨{formatRGBFromJson(rgbJsonTeDaBaoYu);}else if (tianqi == 25) //暴雪{formatRGBFromJson(rgbJsonBaoXue);}else if (tianqi == 26 || tianqi == 27) //浮尘,扬沙{formatRGBFromJson(rgbJsonFuChen);}else if (tianqi == 28 || tianqi == 29) //沙尘暴,强沙尘暴{formatRGBFromJson(rgbJsonShaChenBao);}else if (tianqi == 30 || tianqi == 31) //雾,霾{formatRGBFromJson(rgbJsonWuMai);}else if (tianqi == 32 || tianqi == 33 || tianqi == 34 || tianqi == 35 || tianqi == 36) //风,大风,飓风,热带风暴,龙卷风{formatRGBFromJson(rgbJsonTaiFeng);}else{formatRGBFromJson(rgbJsonQing);}for (i = 0; i < 9; i++){strip.setPixelColor(i, color);}strip.show();//更新彩灯状态
}
//解析JSON串,根据不同天气代码,将color赋值为不同颜色。
void formatRGBFromJson(String json)
{Serial.println(json);DynamicJsonDocument doc(100);//rgb字符串长度不会大于25,所以这里设定50即可DeserializationError error = deserializeJson(doc, json);if (error) {Serial.print(F("deserializeJson() failed: "));Serial.println(error.f_str());return;}JsonObject obj = doc.as<JsonObject>();color = strip.Color(obj["r"], obj["g"], obj["b"]);
}

代码中的tianqi变量,是通过解析心知天气的JSON串得来的,获得方法参照

ESP8266制作天气预报海藻球微景观生态缸记录(三)-更换原装灯为彩灯,实现根据未来天气变色

也可以下载完整的代码文件

ESP01S人体感应开关WS2812天气预报彩灯代码V1.0 https://download.csdn.net/download/tansuo2005/83607705

其实这个生态缸灯早已可用,现在做的工作都是在为它增加设置功能。总不能要改个亮度和颜色都要重新编译下载吧。

这真是突出了ESP系列的一个巨大优点,那就是借用手机这个人手一只的物件就可以远程操作,而无需单独用显示屏和按键写复杂的UI控制(还只能本地操作)。就凭这一点,哪怕你的小制作不需要用到WiFi,也是该选用ESP系列的。

ESP8266制作天气预报海藻球微景观生态缸记录(六)-网页控制灯光颜色准备相关推荐

  1. ESP8266制作天气预报海藻球微景观生态缸记录(二)-人体感应开关灯实现

    生态缸到货了,迅速组装完毕,比想象的小,只怪买的时候没有看好参数. 鉴于已经提前编好程序并在面包板上插好线路,所以直接无损对接就可以工作了,已经实现了人体感应控制开关. 和之前的区别在于多加了一个US ...

  2. ESP8266制作天气预报海藻球微景观生态缸记录(三)-更换原装灯为彩灯,实现根据未来天气变色

    彩灯是这样的8位WS2812模块 经过测试,这货的最大亮度是要超过原装的白光LED的,所以完全可以替换掉原装灯. 如此的话,原先的双光源方案作废,同时ULN2003也不需要用了.因为WS2812直接通 ...

  3. ESP8266制作天气预报海藻球微景观生态缸记录(八)-EEPROM保存灯光颜色(完结)

    EEPROM可以理解为由许多车厢连接而成的火车,每节车厢都能存储一个字节的数据. 存储字符串型数据的原理是: 计算字符串的长度,然后把长度存储在第0号车厢. 循环字符串,从第一号开始,把字符串按字节一 ...

  4. 计算机微课ppt,全国“xx杯”计算机类说课大赛课件一等奖作品:制作“旅游专线”PPT微课课件.pptx...

    全国"xx杯"计算机类说课大赛课件一等奖作品:制作"旅游专线"PPT微课课件.pptx 文档编号:906902 上传时间:2020-02-17 文档类型:PPT ...

  5. App Inventor 2制作天气预报

    前言 在App inventor2中使用百度地图开放API制作天气预报的app实验,需要先去百度地图开放平台申请并获取到相关的ak,此处需要两个API,一个是根据行政区划编码获取天气的信息,另一个是根 ...

  6. html网页特效微课,让微课走进中职网页设计与制作教学

    原标题:让微课走进中职网页设计与制作教学 让微课走进中职网页设计与制作教学 [摘 要]网页设计与制作是中职计算机课程的重要组成部分,对帮助学生认识一些重要的编程语言.掌握网页设计的技能具有重要意义.但 ...

  7. 幼儿园微课怎么制作?怎么给微课配音?

    在传统式的课堂教学中,由于教材书本比较抽象,通常会容易使学生倍感单一,无趣乏味.现在幼儿园老师们也需要制作微课了,而这类幼儿微课最重要的就是吸引孩子们. 因此,幼儿微课可以遵循四个方面内容: 1.趣味 ...

  8. 51单片机+ESP8266制作的门锁,含电路图、制板文件。支持密码、人脸、语音。

    51单片机+ESP8266制作的门锁,含电路图.制板文件.支持密码.人脸.语音. 硬件部分 软件部分 功能 第三方API.SDK 原理图 主要代码 程序执行流程 硬件部分 Esp-8266-01S(3 ...

  9. 利用ESP8266制作环境监测系统+APP inventor制作手机App实时显示

    利用ESP8266制作环境监测系统+APP inventor制作手机App实时显示 原理讲解 ESP8266读取各种传感器数值 传感器数据推送到云端 app inventor 制作app 接收实时数据 ...

  10. (开源)STC89c51结合ESP8266制作物联网环境监测系统+APP inventor制作手机App实时显示

    STC89c51结合ESP8266制作物联网环境监测系统+APP inventor制作手机App实时显示 第一 .先上效果图 第二.原理讲解 第三.c51读取各种传感器数值 第四.传感器数据推送到云端 ...

最新文章

  1. 何恺明团队新作:只用普通ViT,不做分层设计也能搞定目标检测
  2. 项目发布错误的解决方法
  3. SpringMVC工作原理之一:DispatcherServlet
  4. 虚拟机无法开机数据恢复 (建议在做之前做测试,数据双重备份)
  5. Activity service 通信
  6. 字体对话框java实验_Java Web安全 || Java基础 sun.misc.Unsafe
  7. 产生随机数java_java产生随机数的几种方式
  8. 虚拟的有时比真实的还要好(+奥运杂谈)
  9. IntelliJ IDEA、Kotlin 背后公司 JetBrains 在俄罗斯停服
  10. table 谷歌下不出现滚动条
  11. Chaos Control for Mac(GTD计划任务管理工具)
  12. https无法识别证书(unable to find valid certification path to requested target)的另类解法
  13. 计算机应用技术中的c语言,C语言程序设计——Visual C++6.0(高等院校计算机应用技术系列教材)...
  14. armeabi与armeabi-v7a的区别,绝对干货!
  15. python写梦幻西游手游脚本辅助_GitHub - Sandry666/mhxy_fz: 一个基于计算机视觉开发的梦幻西游辅助脚本...
  16. Spring @Value(#{})和@Value(${})
  17. 常系数非齐次线性微分方程和非齐次方程组的特解和齐次解的关系
  18. 实习生、应届生、三方协议、实习协议、劳动合同的区别
  19. Micro SD 卡(TF卡) spi 模式实现方法
  20. 华为胡厚崑:不让任何一个人在数字世界中掉队

热门文章

  1. typora问题解决:This beta version of Typora is expired
  2. linux桌面文件夹改名,Ubuntu 无法重命名文件问题的解决
  3. 键值数据库的基本架构
  4. Tomocat:安装完成,显示HTTP Status 404
  5. 投影仪的对比度多少合适,当贝X3高亮对比度和电视基本一样
  6. HR看完这种简历就崩溃?真相是这样的!
  7. The 2018 ACM-ICPC Asia Qingdao Regional Contest (Mirror)
  8. 教你在线免费PDF转Word,建议收藏
  9. authorized_key 不生效。
  10. 关于博客的自定义皮肤