EEPROM可以理解为由许多车厢连接而成的火车,每节车厢都能存储一个字节的数据。

存储字符串型数据的原理是:

  1. 计算字符串的长度,然后把长度存储在第0号车厢。
  2. 循环字符串,从第一号开始,把字符串按字节一个一个地存进后面的车厢。
  3. 如果要读取这个字符串,需要先去读第0号车厢中存储的长度,然后从第1号车厢开始,向后读取直到达到长度,然后把这些字节拼成字符串返回。
  4. 这是第一个字符串,如果要存储第二个字符串,为了最大化节省EEPROM的空间,需要在前一个字符串的长度基础上+1(因为第一个车厢里存储的不是字符串本身,而是字符串的长度)的位置上写入第二个字符串的长度值,然后从第一个字符串长度的基础上+1+1开始,写入第二个字符串。
  5. 以此类推。

没错,因为没有文件系统,所以要知道每个字符串在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保存灯光颜色(完结)相关推荐

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

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

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

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

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

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

  4. App Inventor 2制作天气预报

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

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

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

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

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

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

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

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

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

  9. Android制作天气预报 —— 图片展示

    主要功能为天气查询.日历查看.语录显示,各个界面间的转换可以通过添加的按键或者设备自带返回键实现.系统运行调试结果如下: 动态视频链接:Android制作天气预报(展示)-CSDN直播 1.默认城市( ...

最新文章

  1. spring 单例 获取多例的位_Spring 获取单例流程(一)
  2. android路由器 设备数,手机查看wifi连接人数_手机查看wifi连接设备数量-192路由网...
  3. 【Python】推荐6个好用到爆的Pycharm插件
  4. 关于php 高并发解决的一点思路
  5. Leetcode PHP题解--D5 804. Unique Morse Code Words
  6. kaggle中自己的notebook不见了
  7. java反编译工具_ReverseTool逆向工具集合
  8. NXP Pico i.MX7D上安装Android Things系统疑难杂症汇总
  9. 博客系统php源码,tjheer博客系统php版 v1.10
  10. 区块链 常用词汇定义
  11. 【搜索】【usaco 4.1.4】奶牛加密术
  12. docker 安装 oracle
  13. 算法设计与分析(第2版)屈婉玲 刘田 张立昂 王捍贫编著 第五章课后习题答案
  14. 人员疏散模型(pso元胞自动机)网挑思路
  15. celery(分布式任务队列)介绍+在django中异步回调使用+定时任务的使用
  16. 一文入门 Spring Boot
  17. matplotlib绘制直方图,饼图,散点图,气泡图,箱型图,雷达图
  18. tomcat7的下载和安装配置
  19. html5制作端午节游戏,意派Epub360怎么制作一个端午节H5小游戏页面?
  20. 【python】backgroundremover 去除背景

热门文章

  1. 姚振华不断完善造车版图 深度布局新能源汽车
  2. 计算机画图怎样更改文字,计算机画图——文字工具的使用
  3. Java程序设计实训教程_Java程序设计实训教程--详细介绍
  4. 怎样在Mac上查看已保存的iPhone Wi-Fi密码?
  5. Office 365 利用并行工作流构建威客式任务管理系统之使用SharePoint Designer 定制威客任务管理流程!
  6. SpringBoot 运行报log4j:WARN No appenders could be found for logger
  7. 关于手机蓝牙开发时遇到的java.io.IOException: Service discovery failed和 @@@ ABORTING: INVALID HEAP ADDRESS IN dlf
  8. 低效能人士的7个习惯
  9. itas109的开源项目汇总
  10. HVR日志分析简单应用