Arduino, EEPROM

이도현·2023년 8월 10일
0

아두이노 학습

목록 보기
18/34

1. EEPROM(Electrically Erasable Read-Only Memory)

  • 전원이 차단되거나 리셋이 되더라도 값을 유지하고 싶은 경우 사용
  • 사용횟수에 제한: 약 10만번 정도
  • 바이트 단위로 데이터 읽기

최대 숫자값은 255

영문자는 알파벳 한 글자

  • 읽기/쓰기 주소 지정

2. 사용법

3. 기본 사용

#include <EEPROM.h>
int randomNumber;

void setup(){
	Serial.begin(9600);
	randomSeed(analogRead(0));
}

void loop(){
	Serial.println("Writing random numbers... ");
	
	for(int i = 0; i< 1024; i++){ //EEPROM에 데이터 쓰기
		randonNumber = random(256);
		EEPROM.write(i, randomNumber); // write(주소, 값)
		delay(100);
	}
	
	Serial.println();
	
	//EEPROM에 데이터 읽기
	for(int i = 0; i < 1024; i++){
	randomNumber = EEPROM.read(i); // read(주소)
	Serial.println("EEPROM Address : " + String(i) + "\t Value :"
									+ randomNumber);
	delay(100);
	}

	while(true); //1회만 시행 후 대기
}

4. RFID, 2바이트 정수처리

#include <EEPROM.h>

int randomNumber;

void setup(){
	Serial.begin(9600);
	randomSeed(analogRead(0));
}

void loop(){
	Serial.println("Writing random numbers...");
	for(int i= 0; i < 10; i = i+2){
		randomNumber = random(8888,9999);
		Serial.print("Random Number : "); Serial.println(randomNumber);
		byte hiByte = highByte(randomNumber);
		byte loByte = lowByte(randomNumber);
		EEPROM.write(i, hiByte);
		Serial.println("EEPROM Address : " + String(i) + "\t Value : " + hiByte);
		EEPROM.write(i+1, loByte); // write(주소, 값)
		Serial.println("EEPROM Address : " + String(i+1) + "\t Value: " + loByte);
		Serial.println();
		delay(100);
	}

	Serial.println();

	Serial.println("Reading EEPROM...");
	
	// EEPROM에 데이터 읽기
	for(int i = 0; i < 10; i = i+2){
		byte hiByte = EEPROM.read(i); // read(주소)
		byte loByte = EEPROM.read(i+1); // read(주소)
		randomNumber = word(hiByte, loByte);
		Serial.println("EEPROM Address : " + String(i) + "\t Value : " + 
		randomNumber);
		delay(100);
	}
	while(true); // 1회만 시행 후 대기
}
	
profile
좋은 지식 나누어요

0개의 댓글