Arduino学习笔记⑦ EEPROM断电保存数据
1.前言
EEPROM,叫做电可擦可编程可读寄存器(是不是觉得好官方,不知道是什么鬼?反正我也一脸懵逼),只需要知道这是一种断电后数据不会丢失的存储设备,可以用来应对需要做记录做保存的场合。简而言之,若想断电后Arduino仍然记住数据,就可以使用EEPROM。至于板子是否支持EEPROM,可以自主去查看板子的简洁。常见Arduino的EEPROM如下:

Arduino EEPROM类库中,EEPROM的地址被设定从0开始,每个地址可以存储1B数据。所以当数据大于1B时,需要逐个字节读写。
- Arduino UNO、Arduino Leonardo 的EEPROM有1KB=1024B的存储空间,对应地址则为0~1023;
- Arduino Mega2560的EEPROM有4KB=4096B的存储空间,对应地址则为0~4095;
Arduino有EEPROM类库,只需要调用EEPROM.h头文件,然后使用write()和read()函数就可以对EEPROM进行读写操作;
常用函数
1.1 write()
作用:对指定地址写入数据;
语法: EEPROM.write(address,value);
参数:
- address,EEPROM地址,起始地址为0;
- value 写入的数据,byte型,意味着如果传入数据大于这个范围会被截断;
返回值:无;
1.2 read()
作用:从指定地址读出数据。一次读取1B数据。如果指定地址没有数据,则读出值为255;
语法: EEPROM.read(address);
参数:
- address,EEPROM地址,起始地址为0;
返回值:byte型,返回指定地址存储的数据;
注意:
- EEPROM有10万次的擦写寿命,一次EEPROM.write会占用3ms,如果程序不断擦写EEPROM,则不用多久就损坏EEPROM,随意注意不要频繁擦写,在真正需要的时候再考虑使用,加入什么延时之类的。
3.实验
实验内容:
在setup中往地址0~3中依次写入2~5,然后在loop中读取地址0~3然后把数据打印到串口显示器;
实验代码:
/**
* @Desc 测试EEPROM
* @author 单片机菜鸟
* @Date 2016/12/25
*
* 注意:Arduino Mega 2560的EEPROM空间是4KB
* 也就是4*1024 B = 4096B
* 也就是地址是0~4095
*/
#include<EEPROM.h>
//表示EEPROM的当前地址,也就是即将要写入的地址
int addr = 0;
void setup() {
// 初始化串口
Serial.begin(9600);
//等待串口准备好
while(!Serial);
int value = 2;
//在地址0~3依次写入2~5
for(int i = addr;i<4;i++){
EEPROM.write(i,value++);
//延时100ms 等待写入
delay(100);
}
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("read data start");
int value;
for(int i = addr;i<4;i++){
value = EEPROM.read(i);
Serial.print("addr:");
Serial.print(i);
Serial.print("\n");
Serial.print("value:");
Serial.print(value);
Serial.print("\n");
}
Serial.println("read data end");
while(1);
}
实验结果:

4.总结
整体上这课还是非常简单的,唯一需要注意就是不要擦写频繁。讲完这课后,我就可以在蓝牙多彩灯加入这个功能了,记录存储当前灯颜色然后下次打开就可以使用。
Arduino学习笔记⑦ EEPROM断电保存数据的更多相关文章
- Android(java)学习笔记182:保存数据到SD卡 (附加:保存数据到内存)
1. 如果我们要想读写数据到SD卡中,首先必须知道SD的路径: File file = new File(Environment.getExternalStorageDirectory()," ...
- Android 学习笔记之实时保存数据-现场保护onSaveInstanceState()
数据保存:在软件开发中我们希望保存下各个Activity数据,以实现客户数据的时时保存,达到较好的用户体验. 那么我们需要解决如下问题: 1.什么时候保存? 2.保存哪些数据? 我想保存应用产 ...
- Android(java)学习笔记125:保存数据到SD卡 (附加:保存数据到内存)
1. 如果我们要想读写数据到SD卡中,首先必须知道SD的路径: File file = new File(Environment.getExternalStorageDirectory()," ...
- Arduino学习笔记① 初识Arduino
1.前言 近段时间,博主陆续更新了ESP8266学习笔记,主要开发平台是Arduino.但是,对于很多无基础的初学者来说,甚至不了解Arduino是什么.因此,博主决定加入一个Arduino学 ...
- R学习笔记(4): 使用外部数据
来源于:R学习笔记(4): 使用外部数据 博客:心内求法 鉴于内存的非持久性和容量限制,一个有效的数据处理工具必须能够使用外部数据:能够从外部获取大量的数据,也能够将处理结果保存.R中提供了一系列的函 ...
- .NET MVC 学习笔记(六)— 数据导入
.NET MVC 学习笔记(六)—— 数据导入 在程序使用过程中,有时候需要新增大量数据,这样一条条数据去Add明显不是很友好,这时候最好就是有一个导入功能,导入所需要的数据,下面我们就一起来看一下导 ...
- Kotlin学习笔记(9)- 数据类
系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步! Kotlin学习笔记(1)- 环境配置 Kotlin学习笔记(2)- 空安 ...
- openresty 学习笔记二:获取请求数据
openresty 学习笔记二:获取请求数据 openresty 获取POST或者GET的请求参数.这个是要用openresty 做接口必须要做的事情.这里分几种类型:GET,POST(urlenco ...
- MyCat 学习笔记 第十篇.数据分片 之 ER分片
1 应用场景 这篇来说下mycat中自带的er关系分片,所谓er关系分片即可以理解为有关联关系表之间数据分片.类似于订单主表与订单详情表间的分片存储规则. 本文所说的er分片分为两种: a. 依据主键 ...
随机推荐
- 【赶快收藏】Hystrix实战,优雅提升系统的鲁棒性
背景 最近接手了一个系统,其功能都是查询.查询分了两种方式,一种是公司集团提供的查询能力,支持全国各个省份的查询,但是业务高峰期时服务响应比较慢:另外一种是各省的分公司都分别提供了对应的查询能力,但是 ...
- [STL] Implement "map", "set"
练习热身 Ref: STL中map的数据结构 C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Re ...
- uboot学习之BL3的流程
BL2的最后通过汇编调用了board_init_r函数,此时进入BL3的阶段,此时的主要工作: 这一阶段涉及的文件及任务如下 arch/arm/lib/board.c 1. boa ...
- Mac配置环境变量path
查看当前配置的path有哪些: 1. echo $PATH 当前所有的 2. cat /etc/paths 这个文件是操作系统自带的 mac系统环境变量的加载顺序(优先级): /etc/profi ...
- c#通过Redis实现轻量级消息组件
最近在开发一个轻量级ASP.NET MVC开发框架,需要加入日志记录,邮件发送,短信发送等功能,为了保持模块的独立性,所以需要通过消息通信的方式进行处理,为了保持框架在部署,使用,二次开发过程中的简易 ...
- docker容器添加对外映射端口
一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如 docker run -it -d --name [contain ...
- 学习Python基础的整体概要
- 聚类算法之K-means
想想常见的分类算法有决策树.Logistic回归.SVM.贝叶斯等.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时候上述条件得不到满 ...
- Python 爬虫入门实战
1. 前言 首先自我介绍一下,我是一个做 Java 的开发人员,从今年下半年开始,一直在各大技术博客网站发表自己的一些技术文章,差不多有几个月了,之前在 cnblog 博客园加了网站统计代码,看到每天 ...
- Java运算符及优先级(全)
运算符是一种特殊的符号,用以表示数据的运算.赋值和比较等. Java运算符分为以下几种: • 算术运算符:+,-,*,/,%,++,-- • 赋值运算符:= • 扩展后的赋值运算符:+=,-=,*=, ...