极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11704|回复: 0

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

[复制链接]
发表于 2015-11-7 23:23:36 | 显示全部楼层 |阅读模式
转载请注明:@小五义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开始记数。具体代码如下:
  1. ##转载请注明:@小五义[url]http://www.cnblogs.com/xiaowuyi[/url]  QQ群:64770604
  2. #include <EEPROM.h>
  3. int address ;//应用EEPROM地址位为1
  4. int value=0;
  5. void setup()
  6. {

  7.   value==1 ;
  8.    EEPROM.write(address, value);
  9.   while (!Serial) {
  10.     ; // wait for serial port to connect. Needed for Leonardo only
  11.   }
  12. }

  13. void loop()
  14. {
  15.   //Serial.print(address);
  16.   Serial.print(value);
  17.   Serial.println();
  18.   delay(1000);
  19. }
复制代码


 (2)记数程序

    清零后,将此记数程序烧入,以后每次上电,EEPROM的存储值会加1,实现对arduino使用次数的记录。具体代码如下:
  1. ##转载请注明:@小五义[url]http://www.cnblogs.com/xiaowuyi[/url]  QQ群:64770604
  2. #include <EEPROM.h>
  3. int address ;//应用EEPROM地址位为1
  4. int value;
  5. void setup()
  6. {
  7.   // initialize serial and wait for port to open:
  8.   Serial.begin(9600);
  9.   value = EEPROM.read(address);
  10.   value+=1 ;
  11.    EEPROM.write(address, value);
  12.   while (!Serial) {
  13.     ; // wait for serial port to connect. Needed for Leonardo only
  14.   }
  15. }

  16. void loop()
  17. {
  18.   //Serial.print(address);
  19.   Serial.print(value);
  20.   Serial.println();
  21.   delay(1000);
  22. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 13:29 , Processed in 0.040999 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表