ESP8266制作天气预报海藻球微景观生态缸记录(八)-EEPROM保存灯光颜色(完结)
EEPROM可以理解为由许多车厢连接而成的火车,每节车厢都能存储一个字节的数据。
存储字符串型数据的原理是:
- 计算字符串的长度,然后把长度存储在第0号车厢。
- 循环字符串,从第一号开始,把字符串按字节一个一个地存进后面的车厢。
- 如果要读取这个字符串,需要先去读第0号车厢中存储的长度,然后从第1号车厢开始,向后读取直到达到长度,然后把这些字节拼成字符串返回。
- 这是第一个字符串,如果要存储第二个字符串,为了最大化节省EEPROM的空间,需要在前一个字符串的长度基础上+1(因为第一个车厢里存储的不是字符串本身,而是字符串的长度)的位置上写入第二个字符串的长度值,然后从第一个字符串长度的基础上+1+1开始,写入第二个字符串。
- 以此类推。
没错,因为没有文件系统,所以要知道每个字符串在EEPROM中的保存起始位置,而无法根据文件名直接去定义。
在这个小制作中,EEPROM足够使用,所以就直接把每个要保存的字符串定义到一个安全的位置上(前一个字符串的最大值也达不到的位置)。这样虽然会造成EEPROM浪费,但无所谓。
在网页中为每种天气设置颜色,然后传到后台记录进EEPROM的方法,和之前介绍过的一样:
//定义每种天气的颜色值在EEPROM中的起始位置,以后就可以通过这个位置找到它。
const uint16_t indexDuoyun = 120;
const uint16_t indexYin = 180;
void setup() {
EEPROM.begin(2048);//要使用多少EEPROM,最大值可以为4096//上电时,从EEPROM中读取存储的数据来出初始天气色彩对应数据——开始 ////请注意,最需要事先运行arduino中的eeprom的eeprom_clear例程以清除旧数据,以防旧数据干扰,在设置前呈现乱码if(get_String(EEPROM.read(indexQing),indexQing+1)!="")//从EEPROM中读取色彩数据{rgbJsonQing =get_String(EEPROM.read(indexQing),indexQing+1);}if(get_String(EEPROM.read(indexDuoyun),indexDuoyun+1)!="")//从EEPROM中读取色彩数据{rgbJsonDuoyun =get_String(EEPROM.read(indexDuoyun),indexDuoyun+1);}
// 开始设置web服务器——彩灯颜色控制设置server.on("/sliderRGB", HTTP_GET, [] (AsyncWebServerRequest *request) {String inputMessage;if (request->hasParam(PARAM_INPUT_QINGTIANVALUE)) {inputMessage = request->getParam(PARAM_INPUT_QINGTIANVALUE)->value();//get传递过来的value参数rgbJsonQing = inputMessage;//设置晴天的颜色set_String(indexQing,indexQing+1,rgbJsonQing);//保存进EEPROM}if (request->hasParam(PARAM_INPUT_DUOYUNVALUE)) {inputMessage = request->getParam(PARAM_INPUT_DUOYUNVALUE)->value();//get传递过来的value参数rgbJsonDuoyun= inputMessage;//设置多云的颜色set_String(indexDuoyun,indexDuoyun+1,rgbJsonDuoyun);//保存进EEPROM}
}
}
至此,我要的功能已经实现了:
- 根据不同天气呈现不同颜色,达到用要颜色提示未来天气的效果
- 有人时才亮,无人时不亮
- 可以用网页来设置灯光亮度和在不同天气下的颜色。
差不多到这里了,这个小东西正在正常运行。
后续也许换掉面包板,把元件焊接到洞洞板上,做不做就看心情了。
ESP8266制作天气预报海藻球微景观生态缸记录(八)-EEPROM保存灯光颜色(完结)相关推荐
- ESP8266制作天气预报海藻球微景观生态缸记录(二)-人体感应开关灯实现
生态缸到货了,迅速组装完毕,比想象的小,只怪买的时候没有看好参数. 鉴于已经提前编好程序并在面包板上插好线路,所以直接无损对接就可以工作了,已经实现了人体感应控制开关. 和之前的区别在于多加了一个US ...
- ESP8266制作天气预报海藻球微景观生态缸记录(三)-更换原装灯为彩灯,实现根据未来天气变色
彩灯是这样的8位WS2812模块 经过测试,这货的最大亮度是要超过原装的白光LED的,所以完全可以替换掉原装灯. 如此的话,原先的双光源方案作废,同时ULN2003也不需要用了.因为WS2812直接通 ...
- 计算机微课ppt,全国“xx杯”计算机类说课大赛课件一等奖作品:制作“旅游专线”PPT微课课件.pptx...
全国"xx杯"计算机类说课大赛课件一等奖作品:制作"旅游专线"PPT微课课件.pptx 文档编号:906902 上传时间:2020-02-17 文档类型:PPT ...
- App Inventor 2制作天气预报
前言 在App inventor2中使用百度地图开放API制作天气预报的app实验,需要先去百度地图开放平台申请并获取到相关的ak,此处需要两个API,一个是根据行政区划编码获取天气的信息,另一个是根 ...
- 幼儿园微课怎么制作?怎么给微课配音?
在传统式的课堂教学中,由于教材书本比较抽象,通常会容易使学生倍感单一,无趣乏味.现在幼儿园老师们也需要制作微课了,而这类幼儿微课最重要的就是吸引孩子们. 因此,幼儿微课可以遵循四个方面内容: 1.趣味 ...
- 51单片机+ESP8266制作的门锁,含电路图、制板文件。支持密码、人脸、语音。
51单片机+ESP8266制作的门锁,含电路图.制板文件.支持密码.人脸.语音. 硬件部分 软件部分 功能 第三方API.SDK 原理图 主要代码 程序执行流程 硬件部分 Esp-8266-01S(3 ...
- 利用ESP8266制作环境监测系统+APP inventor制作手机App实时显示
利用ESP8266制作环境监测系统+APP inventor制作手机App实时显示 原理讲解 ESP8266读取各种传感器数值 传感器数据推送到云端 app inventor 制作app 接收实时数据 ...
- (开源)STC89c51结合ESP8266制作物联网环境监测系统+APP inventor制作手机App实时显示
STC89c51结合ESP8266制作物联网环境监测系统+APP inventor制作手机App实时显示 第一 .先上效果图 第二.原理讲解 第三.c51读取各种传感器数值 第四.传感器数据推送到云端 ...
- Android制作天气预报 —— 图片展示
主要功能为天气查询.日历查看.语录显示,各个界面间的转换可以通过添加的按键或者设备自带返回键实现.系统运行调试结果如下: 动态视频链接:Android制作天气预报(展示)-CSDN直播 1.默认城市( ...
最新文章
- spring 单例 获取多例的位_Spring 获取单例流程(一)
- android路由器 设备数,手机查看wifi连接人数_手机查看wifi连接设备数量-192路由网...
- 【Python】推荐6个好用到爆的Pycharm插件
- 关于php 高并发解决的一点思路
- Leetcode PHP题解--D5 804. Unique Morse Code Words
- kaggle中自己的notebook不见了
- java反编译工具_ReverseTool逆向工具集合
- NXP Pico i.MX7D上安装Android Things系统疑难杂症汇总
- 博客系统php源码,tjheer博客系统php版 v1.10
- 区块链 常用词汇定义
- 【搜索】【usaco 4.1.4】奶牛加密术
- docker 安装 oracle
- 算法设计与分析(第2版)屈婉玲 刘田 张立昂 王捍贫编著 第五章课后习题答案
- 人员疏散模型(pso元胞自动机)网挑思路
- celery(分布式任务队列)介绍+在django中异步回调使用+定时任务的使用
- 一文入门 Spring Boot
- matplotlib绘制直方图,饼图,散点图,气泡图,箱型图,雷达图
- tomcat7的下载和安装配置
- html5制作端午节游戏,意派Epub360怎么制作一个端午节H5小游戏页面?
- 【python】backgroundremover 去除背景
热门文章
- 姚振华不断完善造车版图 深度布局新能源汽车
- 计算机画图怎样更改文字,计算机画图——文字工具的使用
- Java程序设计实训教程_Java程序设计实训教程--详细介绍
- 怎样在Mac上查看已保存的iPhone Wi-Fi密码?
- Office 365 利用并行工作流构建威客式任务管理系统之使用SharePoint Designer 定制威客任务管理流程!
- SpringBoot 运行报log4j:WARN No appenders could be found for logger
- 关于手机蓝牙开发时遇到的java.io.IOException: Service discovery failed和 @@@ ABORTING: INVALID HEAP ADDRESS IN dlf
- 低效能人士的7个习惯
- itas109的开源项目汇总
- HVR日志分析简单应用