转载请注明:@小五义http://www.cnblogs.com/xiaowuyi  QQ群:64770604

一、EEPROM简介

EEPROM (Electrically Erasable Programmable Read-Only Memory),上电可擦可编程只读存储器--一种掉电后数据不丢失的存储芯片,简而言之就是你想断电后arduino还要保存一些参数,就使用EEPROM吧。在各型号的arduino控制器上的AVR芯片均带有EEPROM,也有外接的EEPROM芯片,常见arduino控制器的EEPROM大小:Arduino UNO、Arduino duemilanove-m328、Zduino m328均使用ATmega328芯片,EEPROM都为1K,Arduino duemilanove-m168的EEPROM为512bytes。下面以arduino leonardo介绍arduino自带的EEPROM使用方法,以及arduino插拔次数的计数方法,arduino中已经存在EEPROM类库,我们要使用得先调用EEPROM.h,然后使用write和read方法,即可操作EEPROM。

二、arduino iDE中的例程(具体程序请从ide中添加)

1.写入例程

选择 File>Examples>EEPROM>eeprom_write。

2.读取例程
     选择 File>Examples>EEPROM>eeprom_read。

3.清除
     选择 File>Examples>EEPROM>eeprom_clear
     清除EEPROM的内容,其实就是把EEPROM中每一个字节写入0,因为只用清一次零,所以整个程序都在setup部分完成。

三、利用EEPROM存储记录arduino使用次数

记录arduino的使用次数,就是记录arduino上电次数。考虑利用eeprom进行存储,每上电一次,存储数值加1。

(1)清零程序

在arduino首次使用或者记录时,先清零,保证从0开始记数。具体代码如下:

##转载请注明:@小五义http://www.cnblogs.com/xiaowuyi  QQ群:64770604
#include <EEPROM.h>
int address ;//应用EEPROM地址位为1
int value=0;
void setup()
{value==1 ;EEPROM.write(address, value);while (!Serial) {; // wait for serial port to connect. Needed for Leonardo only}
}void loop()
{//Serial.print(address);Serial.print(value);Serial.println();delay(1000);
}

  (2)记数程序

清零后,将此记数程序烧入,以后每次上电,EEPROM的存储值会加1,实现对arduino使用次数的记录。具体代码如下:

##转载请注明:@小五义http://www.cnblogs.com/xiaowuyi  QQ群:64770604
#include <EEPROM.h>
int address ;//应用EEPROM地址位为1
int value;
void setup()
{// initialize serial and wait for port to open:Serial.begin(9600);value = EEPROM.read(address);value+=1 ;EEPROM.write(address, value);while (!Serial) {; // wait for serial port to connect. Needed for Leonardo only}
}void loop()
{//Serial.print(address);Serial.print(value);Serial.println();delay(1000);
}

  最后,感谢公司李同学的文档整理。

利用EEPROM实现arduino的断电存储相关推荐

  1. Arduino 利用EEPROM存储当前引脚状态值

    Arduino 利用EEPROM存储当前引脚状态值 实例代码 #include <EEPROM.h>// 定义要访问的字节数 #define EEPROM_SIZE 1// constan ...

  2. Arduino EEPROM对结构体数据存储和读取

    Arduino EEPROM对结构体数据存储和读取 以Arduino UNO开发板为例. 注意:该示例不适用于在ESP8266上使用 EEPROM.put()或者 EEPROM.get()来对数据读写 ...

  3. 利用PROGISP实现ARDUINO IDE编写的程序的下载以及如何把AVR单片机做成ARDUINO板

    首先讲讲题目的由来吧.我做的东西原本是利用ARDUINO MEGA2560及各种模块搭建起来的,程序自然也是用ARDUINO IDE写的.但这种东拼西凑的产品自然不够好,更主要的是,之前ARDUINO ...

  4. Arduino ESP8266 SPI-FFS存储区域

    Arduino ESP8266 SPI-FFS存储区域 首先请原谅我分开来写,文章老是不过审核. 前言 在前面博文关于ESP8266WiFiWebServer的例程中,大家可以发现,博主基本上都是手动 ...

  5. C++利用双哈希表实现存储机制hash table的算法(附完整源码)

    C++利用双哈希表实现存储机制的算法 C++利用双哈希表实现存储机制的算法完整源码(定义,实现,main函数测试) C++利用双哈希表实现存储机制的算法完整源码(定义,实现,main函数测试) #in ...

  6. STC15系列单片机利用EEPROM统计开机次数

    STC15系列单片机利用EEPROM统计开机次数

  7. 【K210开发板】人脸识别+ SD卡断电存储 --实时按键录取人脸信息并识别

    一.人脸识别 1.获取机器码 人脸识别就是在人脸检测的基础上,除了检测人脸的位置外,还可以检测出这个人是谁(需要先对准人按按钮学习). 先到 maixhub 按照说明下载模型, 获得模型smodel, ...

  8. 利用Bdrive打造个人私有云存储解决方案

    Bdrive 一款私有云储存软件,可以自己方便的在 Mac/Windows 下架设服务器,并可以通过 PC.Mac.iOS.Android 跨平台使用.以下简单介绍一下利用Bdrive来完成个人私有云 ...

  9. 利用DHT22和Arduino测量温湿度并显示在串口和OLED显示屏上

    实验结果 温湿度显示在串口: 温湿度显示在OLED屏幕: 实验代码 #include "U8glib.h" #include "DHT.h"U8GLIB_SSD ...

  10. 利用双向循环链表实现长整数的存储_重学数据结构之链表篇

    本文是重新数据结构系列文章的第二篇,本文和大家一起探讨链表的相关知识. 链表是怎么样的数据结构 链表,不需要连续的内存空间,通过"指针(引用)"将一组零散的内存块串联起来的数据结构 ...

最新文章

  1. 计算机启动和操作系统加载小话
  2. Facebook 田渊栋:NeurIPS 2020 中了两篇,感觉还算不错
  3. 温故(2):pass by value
  4. 网络监控系统安装的4种方式,安防必备
  5. 架构师一般做到多少岁_软件测试可以做到多大岁数?
  6. xshell更改背景颜色,解决乱码问题及更改字体及字体大小
  7. AJAX无刷新搜索,即输即得(未完善…)
  8. 【Flink】Flink 源码阅读笔记(15)- Flink SQL 整体执行框架
  9. 深度linux不能联网,Deepin Linux 无法上网
  10. Halcon PDF文档(hdevelop_users_guide)学习总结之六——Halcon如何导出C++代码
  11. hdu 2222 Keywords Search ac自己主动机
  12. Python读取并遍历CSV数据
  13. IntelliJ IDEA破解和汉化
  14. python生成中文字符画_用python生成字符画
  15. Vue源码剖析(一):抽离AST抽象语法树
  16. 不知道怎么开发VR游戏?Unity5.3官方VR教程重磅登场-系列3 VR中的交互方式
  17. 谷歌邮箱lmap服务器填什么_解决Gmail的imap收发邮件无法连接服务器的问题
  18. 教妹学Java(十七):do-while 循环
  19. Holt-Winters
  20. 关于“/usr/include/openssl/bn.h 288 error: parse error before BN_ULONG解决方法

热门文章

  1. MyBatis中大于和小于号的转义写法
  2. code forces 1176 D. Recover it!
  3. kudu导入文件(基于impala)
  4. Struts2 简单的上传文件并且显示图片
  5. Python cannot import name 'Line' from 'pyecharts'
  6. mysql导出成execl
  7. (转载)Android开发在路上:少去踩坑,多走捷径
  8. effective c++ 第六章
  9. asp.net服务器控件开发-学习之路(一)
  10. 下面的代码能确定参数是否为奇数吗?