아두이노/NodeMCU

[NodeMCU] EEPROM 읽기 및 쓰기

Eu4ng 2020. 7. 25. 09:06

* 선행 조건

- 이 블로그에서 사용하는 분할 코딩 규칙을 알고 있다

 

사용제품: NodeMCU V2 CP2102/ESP8266/ESP-12E

핀 연결: x

 

외부 라이브러리:

x

 

소스 코드:

- 프로젝트 이름: eeprom

더보기

 eeprom 탭

void setup() {
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
  eeprom_setup();
  print_memory();
  print_data();

  Serial.println();
  
  memory_write();
  memory_read();
  print_memory();
  debug();
}

void loop() {
  // put your main code here, to run repeatedly
}

 

 

_eeprom 탭

#include <EEPROM.h>

#define memory_address 981
#define data_length_address 1021

char memory[21] = "";
String data("Test");

 

 

main 탭

void eeprom_setup(){
  EEPROM.begin(4096);
}

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

void eeprom_read(int address, int len_address, char* memory){
  uint8_t dataSize = EEPROM.read(len_address);
  for (int i = 0; i < dataSize; i++) memory[i] = EEPROM.read(address + i);

  //for Serial.println(memory);
  memory[dataSize] = '\0';
}

void memory_write(){
  EEPROM.write(data_length_address,data.length());
  eeprom_write(memory_address,data);
  EEPROM.commit();
  Serial.println("memory에 data 작성 완료");
}

void memory_read(){
  eeprom_read(memory_address, data_length_address, memory);
}

void print_memory(){
  Serial.print("Memory: ");
  Serial.println(memory);
}

void print_data(){
  Serial.print("Data: ");
  Serial.println(data);
  Serial.print("Data Length: ");
  Serial.println(data.length());
}

void debug(){
  uint8_t dataSize = EEPROM.read(data_length_address);
  Serial.print("stored Data Length: ");
  Serial.println(dataSize);
}

 

시리얼 모니터 및 결과