아두이노/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);
}
시리얼 모니터 및 결과