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~5for(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.总结
整体上这课还是非常简单的,唯一需要注意就是不要擦写频繁。讲完这课后,我就可以在蓝牙多彩灯加入这个功能了,记录存储当前灯颜色然后下次打开就可以使用。
转载于:https://www.cnblogs.com/danpianjicainiao/p/11048655.html
Arduino学习笔记⑦ EEPROM断电保存数据相关推荐
- eeprom stm8l 擦除 读写_STM8L探索套件学习笔记-EEPROM(十一)
原标题:STM8L探索套件学习笔记-EEPROM(十一) 上节将到官方例程使用 EEPROM存储外围电路消耗的电流值,今天我们对 STM8L的EEPROM介绍下.STM8L带有的32K的FLASH和1 ...
- 学习笔记(五)——数据适配器、数据表、数据网格视图控件的综合应用。
学习笔记(五)--数据适配器.数据表.数据网格视图控件的综合应用. 1. 批量修改 修改包括增加,删除以及更新3个操作,所以声明实力化3个SQL命令分别应用于插入,删除以及修改 将声明的SQL命令连 ...
- R学习笔记(4): 使用外部数据
来源于:R学习笔记(4): 使用外部数据 博客:心内求法 鉴于内存的非持久性和容量限制,一个有效的数据处理工具必须能够使用外部数据:能够从外部获取大量的数据,也能够将处理结果保存.R中提供了一系列的函 ...
- Arduino学习笔记2
一.蜂鸣器输出实验 1.源代码 int buzzer=2;//设置控制蜂鸣器的数字口对应板子上2口 void setup() { pinMode(buzzer,OUTPUT);//设置对应的输出模式 ...
- Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法
Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法 把开发手册理了一遍,发现还有几个点没有记录下来,其中一个就是使用点对的粗对齐和使用参考目标的精确对齐.为了把这个学习笔记凑够 ...
- Mysql学习笔记(二)——表格及数据的插入
Mysql学习笔记(二)--表格及数据的插入 文章目录 Mysql学习笔记(二)--表格及数据的插入 1.Mysql常用指令 2.创建表格 A.数据类型 B.完整性约束条件 3.查看表格 4.修改表格 ...
- JavaWeb黑马旅游网-学习笔记05【分类数据展示功能】
Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...
- HALCON 20.11:深度学习笔记(3)---Data(数据)
HALCON 20.11:深度学习笔记(3)---Data(数据) HALCON 20.11.0.0中,实现了深度学习方法.其中,关于术语"数据"的介绍如下: 术语"数据 ...
- SDN软件定义网络 学习笔记(4)--数据平面
SDN软件定义网络 学习笔记(4)--数据平面 1. 简介 2. SDN数据平面架构 2.1 传统网络交换设备架构 2.2 SDN交换设备架构 2.3 数据平面架构图 3. SDN芯片与交换机 3.1 ...
最新文章
- Nature替宠物正名了:宝宝身体好,猫狗或真不可少!
- Lasso回归的坐标下降法推导
- windows10配置php7.1+apache2.4+mysql5.7
- 微信小程序 获取用户信息并保存登录状态
- 前端学习(3329):闭包的形式5
- 【POJ - 1661】Help Jimmy(记忆化搜索,dp)
- 安全生产六步法是什么_支塘镇探索“五步法”压紧压实出租厂房安全生产主体责任...
- Eclipse错误:Syntax error on tokens, delete these tokens问题解决
- java text 格式化_java.text.Format
- 工序能力指数Cp判定标准(附免费CPK计算工具)
- 【文献研究】国际班轮航运的合作博弈:The coopetition game in international liner shipping
- 两年数据对比柱形图_【Excel技巧】制作柱形图图表完美呈现百分比,提升您的报表颜值...
- lcov和gcov的使用错误
- 【Babel】1145- 非常不错的 Babel 插件开发教程
- WPF实现炫酷Loading控件
- Linux系统的时区时间设置
- C语言 从键盘输入圆的半径,计算并输出圆的正内接六边形的面积,以及这个正六边形面积占圆面积之百分比
- python将日期分隔成单独的年月日时分列
- 理解Linux的.a、.so和.o文件
- 给热心老哥搭个窝,2021年30分钟用Discourse搭建新一代BBS论坛站全攻略