EEPROM이란 아두이노 보드(마이크로컨트롤러)가 꺼져도 값이 유지되는 저장공간입니다.
EEPROM에는 512 byte의 EEPROM이 있습니다.
1. 헤더불러오기
#include <EEPROM.h>
먼저 EEPROM을 사용하려면 해당 헤더를 불러와야합니다.
2. 값 쓰기
EEPROM.write(address,value);
첫번째 매개변수 address에는 주소값(0~512)
두번째 매개변수 value에는 byte 값(0~255)를 씁니다.
EEPROM.update(address, value);
EEPROM.update란 EEPROM.write와 유사하지만
EEPROM.wirte 경우 3.3ms 시간이 걸리는데 이는 꽤 긴시간입니다.
EEPROM.update를 사용할 경우 값을 쓰기전에 해당주소의 값과 내가 쓸 값이 같을경우 연산을 수행하지 않아 시간을 절약할 수 있습니다.
3. 값 읽기
EEPROM.read(address);
EEPROM.write 와 같이 byte 값(0~255)를 읽어올 수 있습니다.
4. 정리
#include <EEPROM.h>
void setup()
{
Serial.begin(9600);
int address = 0;
int value = 10; // 0부터 255까지 byte 값.
EEPROM.write(address,value);
int value2 = EEPROM.read(address);
Serial.println(value2);
}
void loop(){ }
위의 예제는 문제가 없으나
EEPROM은 byte단위 저장을 하기 때문에 0~255 또는 -128 ~ 127 범위 외의 값을 쓰고 읽을 경우 에러 또는 원하지 않는 값이 연산될 수 있습니다.
예를들어 아두이노 보드에 따라 int 형이 2byte일 수도, 4byte일 수도 있는데
4 byte라 가정하면 총 4개의 저장공간에 byte단위로 분리하여 저장하고
4개의 byte를 불러와 연산하여 하나의 int값을 만들어야 합니다.
시프트 연산자인 >> or << 를 사용하여 저장할 수도 있으나 부동소수점(실수)의 경우에는 어려움이 따릅니다.
/* todo update
다음은 byte단위로 여러 크기의 자료형들을 연산하는 방법입니다.
*/
'프로그래밍 > Arduino' 카테고리의 다른 글
[아두이노] ArduinoJson5 Json to String (0) | 2022.07.01 |
---|---|
[아두이노] 이전 버전 설치하기 (0) | 2022.06.22 |
[아두이노] ArduinoJson 에러 해결 (0) | 2022.06.08 |
[아두이노] 아두이노 쓰레드 사용(FreeRTOS) (0) | 2022.03.15 |
[아두이노] undefined reference errors (0) | 2021.01.26 |
댓글