Arduino EEPROM 教學

說明

可以用來儲存資源,並且重新開機後

資料不會消失

因此可以用來儲存一些

重新開機也不會消失的資料

匯入EEPROM.h Library

匯入 Library

#include <EEPROM.h>

取得 EEPROM 大小

透過 EEPROM.length() 即可以取得 Arduino 內建的 EEPROM 大小

像 Arduino Uno 的內建 EEPROM 為 1024

EEPROM.length() 得到的結果就是 1024

EEPROM.length()

EEPROM.write () 寫入資料

EEPROM.write 透過此函式進行寫入資料的動作

  • 第一個參數:資料位置
  • 第二個參數:資料

範例:寫入字串

WriteInfoEEPROM("Hello");

void WriteInfoEEPROM(String text){
  for (int i = 0; i < text.length(); ++i)
  {
    EEPROM.write(i, text[i]);
  }
}

清除資料

清除資料其實就是在每個 EEPROM 上填 0

範例:清除資料副程式

void CleanEEPROM(){
    for (size_t i = 0; i < EEPROM.length(); i++)
    {
        EEPROM.write(i, 0);
    }
}

EEPROM.read() 讀取資料

透過 EEPROM.read() 可以得到在特定位置的資料

範例程式碼

#include <EEPROM.h>
void setup() {
  Serial.begin(9600);
  String Data = "Hello";
  String EEPROM_String;
  // Clean Data from EEPROM
  CleanEEPROM();
  // Write Data to EEPROM
  WriteInfoEEPROM(Data);
  // Reading Data from EEPROM
  for (int i = 0; i < Data.length(); i++)
  {
    EEPROM_String += char(EEPROM.read(i));
    Serial.print("Reading String = ");
    Serial.println(char(EEPROM.read(i)));
  }
  Serial.print("Full String = ");
  Serial.println(EEPROM_String);
}

void loop() {}

void CleanEEPROM(){
    for (size_t i = 0; i < EEPROM.length(); i++)
    {
        EEPROM.write(i, 0);
    }
    Serial.println("Clean EEPROM");
}

void WriteInfoEEPROM(String text){
  for (int i = 0; i < text.length(); ++i)
  {
    EEPROM.write(i, text[i]);
  }
}

輸出結果

Clean EEPROM
Reading String = H
Reading String = e
Reading String = l
Reading String = l
Reading String = o
Full String = Hello
Last modification:May 6th, 2020 at 04:55 pm