zoukankan      html  css  js  c++  java
  • 利用EEPROM实现arduino的断电存储

    转载请注明:@小五义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);
    }
    

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

     

  • 相关阅读:
    三十七、Java基础之JDBC
    三十六、Java基础之File类
    各种IoC框架下实现AOP
    Eclipse导出可执行Jar文件(包含第三方Jar包)
    设计模式(Patterns in Java)-解道
    MyBatis入门示例
    freemarker实例2
    freemarker小例子
    MyEclipse8.6 破解以及注册码
    myeclipse中java文件中文注释乱码问题
  • 原文地址:https://www.cnblogs.com/xiaowuyi/p/4940591.html
Copyright © 2011-2022 走看看