基于Arduino IDE 野火ESP8266模块 EEPROM 存储开发

一、操作存储器

我们可以使用ESP8266模块的EEPROM,也就是可读可擦存储器,可以掉电不丢失地帮我们存储一些数据。ESP8266微控制器有一个闪存区(Flash memory) 来模拟Arduino的EEPROM。这是微控制器中一个特殊的内存位置,即使在主板关闭后,数据也会保留在内存中。需要注意的一件重要的事情是,EEPROM具有有限的尺寸和寿命。存储器单元可以根据需要多次读取,但写入周期的次数限制在100,000次。建议密切关注存储数据的大小以及希望更新数据的频率。**一般来说,闪存的整体大小为4MB。ESP8266的EEPROM大小为4kB。**如果想要记录一组传感器的实时数据来绘制曲线,最好选择SD卡模块来存储数据。
头文件

#include<EEPROM.h>

库函数有
在这里插入图片描述

在这里插入图片描述
与标准EEPROM类有点不同。在开始读或写之前需要调用EEPROM.Begin (size),size是你想要使用的字节数。大小可以在4到4096字节之间。EEPROM.write不立即写入闪存,将更改保存到flash中必须调用EEPROM.commit()。EEPROM.end也有此功能,同时将释放EEPROM内容的RAM副本。EEPROM库使用位于嵌入式文件系统之后的一个闪存扇区。
请注意,每次需要保存更改的EEPROM数据时,扇区都需要重新闪现。因此,即使写入少量数据,也会很快耗尽闪存。

官方的代码示例

https://github.com/esp8266/Arduino/tree/master/libraries/EEPROM/examples

二、测试代码

参考例程:

//Libraries
#include <EEPROM.h>//https://github.com/esp8266/Arduino/blob/master/libraries/EEPROM/EEPROM.h
//Constants
#define EEPROM_SIZE 12
void setup() {//Init Serial USBSerial.begin(115200);Serial.println(F("Initialize System"));//Init EEPROMEEPROM.begin(EEPROM_SIZE);//Write data into eepromint address = 0;int boardId = 18;EEPROM.put(address, boardId);address += sizeof(boardId); //update address valuefloat param = 26.5;EEPROM.put(address, param);EEPROM.commit();//Read data from eepromaddress = 0;int readId;EEPROM.get(address, readId);Serial.print("Read Id = ");Serial.println(readId);address += sizeof(readId); //update address valuefloat readParam;EEPROM.get(address, readParam); //readParam=EEPROM.readFloat(address);Serial.print("Read param = ");Serial.println(readParam);EEPROM.end();
}
void loop() {}

测试代码功能如下,先判断是否写入过,如果没有写入则写入指定信息数据,否则直接读取数据,并将数据打印出来。

#include <EEPROM.h>void setup() {// put your setup code here, to run once:Serial.begin(115200);Serial.println();EEPROM.begin(10);if(EEPROM.read(0) != 0xAA){Serial.println("write");for(int i=0;i<10;i++){EEPROM.write(i,0xAA+i);           //执行写入操作Serial.println(0xAA+i);EEPROM.commit();}}else{Serial.println("read");for(int i=0;i<10;i++){Serial.println(EEPROM.read(i));     //执行读出操作}}EEPROM.end();
}void loop() {// put your main code here, to run repeatedly:
}   

测试结果如下:

第一此启动
在这里插入图片描述

第二次启动
在这里插入图片描述

整体如下,可以看到数据已经被存储,即使掉电也不会丢失。
在这里插入图片描述

参考:
https://arduino-esp8266.readthedocs.io/en/latest/libraries.html#eeprom
链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/770381.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode添加gitee

1.创建仓库 2.Git 全局设置 3.初始化仓库 2.1 打开vscode打开需要上传到给git的代码文件 2.2.点击左边菜单第三个的源代码管理->初始化仓库 4.点击加号暂存所有更改 5.添加远程仓库 5.1 添加地址&#xff0c;回车 5.2 填写库名&#xff0c;回车 6.提交和推送 6.1 点击✔提交…

SpringBoot学习之ElasticSearch下载安装和启动(Mac版)(三十一)

本篇是接上一篇Windows版本,需要Windows版本的请看上一篇,这里我们继续把Elasticsearch简称为ES,以下都是这样。 一、下载 登录Elasticsearch官网,地址是:Download Elasticsearch | Elastic 进入以后,网页会自动识别系统给你提示Mac版本的下载链接按钮 二、安装 下载…

【分布式】——CAPBASE理论

CAP&BASE理论 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/tree-learning-notes ⭐⭐⭐⭐⭐⭐ Spring专栏&#x1f449;https://blog.csdn.net/weixin_53580595/category_12279588.html Sprin…

JMeter元件作用域和执行顺序

JMeter元件作用域和执行顺序 元件的基本介绍基本元件总结 作用域的基本介绍作用域的原则元件执行顺序Jmeter第一个案例&#xff1a; Jmeter三个重要组件&#xff08;重点&#xff09;线程组特点线程组分类线程组的属性案例分析 HTTP请求案例一&#xff08;使用HTTP请求路径来传…

基于ArkUI框架开发-ImageKnife渲染层重构

ImageKnife是一款图像加载缓存库&#xff0c;主要功能特性如下&#xff1a; ●支持内存缓存&#xff0c;使用LRUCache算法&#xff0c;对图片数据进行内存缓存。 ●支持磁盘缓存&#xff0c;对于下载图片会保存一份至磁盘当中。 ●支持进行图片变换&#xff1a;支持图像像素…

Linux配置elasticsearch开机自启

脚本&#xff1a; vi /etc/init.d/elasticsearch脚本内容&#xff1a; ES_HOME的路径替换为自己的 #!/bin/bash #chkconfig: 2345 80 90 #description: elasticsearch export ES_HOME/usr/local/elasticsearch-8.8.0case "$1" in start)su es<<!cd $ES_HOME.…

el-card设置内边距

el-card设置内边距 :deep(.el-card .el-card__body) {padding: 5px; }

Android 15全面解读:性能飙升、隐私守护与智能生活新纪元

1. 更强大的性能 Android 15 带来了一系列性能方面的改进&#xff0c;以确保您的设备在运行应用程序时能够更加流畅。通过对系统进行优化&#xff0c;Android 15 在响应速度和性能方面都有了显著的提升。 这些优化包括&#xff1a; 新一代处理器支持&#xff1a; Android 15 …

java第一次作业(二)

先写思路&#xff0c;再写代码&#xff0c;思路清晰&#xff0c;才能写对代码 7-6 求12...n的和 思路&#xff1a; 运用expression的字符串输出 重点&#xff1a; expression输出 代码&#xff1a; import java.util.Scanner; public class Main {public static void main…

【代驾+顺风车+货运】全开源双端APP代驾+顺风车+货运代驾小程序源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 一、详细介绍 系统是基于Thinkphpuniapp开发的&#xff0c;全开源未加密&#xff0c;这套源码可以拿回去自己做二开 后台用户端司机端 功能详情介绍&#xff1a; 车主实名认证&#xff0c;驾驶证认证&#xff0c;车…

Android-System SELinux 权限

一、SELinux概念 安全增强型 Linux&#xff08;Security-Enhanced Linux&#xff09;简称 SELinux&#xff0c;它是 Linux 的一个安全子系统。SELinux 主要作用是最大限度地减小系统中服务进程可访问的资源&#xff08;最小权限原则&#xff09;。对资源的访问控制分为两类: DA…

MySQL8.0.27(社区版)安装教程和环境变量配置

MySQL8.0.27&#xff08;社区版&#xff09;软件百度网盘链接 链接&#xff1a;https://pan.baidu.com/s/1SRS0hAQQBENQFTfLeDjYzw?pwd1111 提取码&#xff1a;1111 下载完成后&#xff0c;解压MySQL社区版的ZIP压缩文件&#xff0c;通过命令的方式安装MySQL 1.安装MySQL8.0…

前端理论总结(css3)——css优化的方法

1&#xff1a;首推的是合并css文件&#xff0c;如果页面加载10个css文件&#xff0c;每个文件1k&#xff0c;那么也要比只加载一个100k的css文件慢 2&#xff1a;减少css嵌套&#xff0c;最好不要套三层以上 3&#xff1a;不要在ID选择器前面进行嵌套&#xff0c;ID本来就是唯一…

讨论物联网如何帮助监测和改善环境质量

物联网&#xff08;IoT&#xff09;作为一种革命性的技术&#xff0c;通过将各种设备和物品连接到互联网&#xff0c;使它们能够收集和交换数据&#xff0c;为监测和改善环境质量提供了强大的工具。以下是物联网在环境监测和改善方面的一些关键作用&#xff1a; 实时数据收集&…

Ubuntu20.04下VSCode配置PCL和OpenCV库-C++

Ubuntu20.04 VSCode Cpp PCL OpenCV 准备工作 代码编辑&#xff1a;VSCode 开发语言&#xff1a;C 编译工具&#xff1a;Cmake G 依赖需求&#xff1a;PCL / OpenCV 安装PCL库 sudo apt install libpcl-dev配置OpenCV库 安装依赖 sudo apt-get install build-essenti…

云运营安全概述,云运营安全的方案措施有哪些?

精品推荐-2024最新企业网络安全运营方案资料合集&#xff08;29份&#xff09;.zip 【推荐】最新网络安全运营方案和实践合集&#xff08;共80多份&#xff09;.zip 云运营安全是指在云环境中进行运营活动时&#xff0c;确保数据和系统的安全性。这涉及到多个方面&#xff0c…

程序汪若依微服务华为云Linux部署保姆教程

若依官方有3个版本&#xff0c;程序汪以前已经出了对应的安装部署视频教程 单应用版本 前后分离版本 微服务版本 本视频是若依微服务版本&#xff0c;如果基础的环境软件都不会安装建议看下程序汪的单应用和前后端分离版本教程&#xff0c; 欢迎点击进入 &#xff08;单应…

Flask蓝图找不到路由地址,访问404

Flask蓝图找不到路由地址&#xff0c;访问404 问题描述&#xff1a; 使用flask的蓝图对不同的模块设置路由地址时&#xff0c;接口是放到不同的python文件里的&#xff0c;当编写完一个蓝图的接口&#xff0c;进行访问请求的时候&#xff0c;出现了404无法访问的情况。 一、检查…

SQLite3 数据库的基本操作

SQLite3 是一种轻量级的关系型数据库管理系统&#xff0c;常用于移动设备和小型应用程序中。下面是一些使用 SQLite3 数据库的基本操作&#xff1a; 连接到数据库&#xff1a;使用命令 0 来连接到一个 SQLite3 数据库文件&#xff0c;如果该文件不存在则会创建一个新的数据库文…

【Python】python+requests+excel+pytest-实现接口自动化实例

目录 测试需求实现思路完整框架2.1 初始化数据 (test_data.xlsx)2.2 核心脚本 (api_client.py)2.3 测试用例 (test_interfaces.py)2.4 日志 (logging)2.5 pytest配置文件 (pytest.ini)2.6 测试报告 (pytest-html)2.7 入口函数 (run_tests.py)2.8 完整流程注意事项测试需求 简单…