利用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);
}

  最后,感謝公司李同學的文檔整理。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM