코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-08-12 11:37:39
메모리는 데이터가 저장되는 공간으로 크게 휘발성 메모리와 비휘발성 메모리로 나누어 진다.
휘발성 메모리는 한번 저장되었다가 장치가 꺼지게 되면 저장되었던 데이터가 다 날라가는 메모리로 쉽게 컴퓨터의 RAM을 생각하면 편하다.
그에 반해서 비휘발성 메모리는 한번 저장된 데이터는 직접 삭제하기 전까지는 메모리에 남아있어 장치가 꺼져도 남아있는 메모리이다. 예를 들면 컴퓨터 하드디스크를 생각하면 편하다.
아두이노도 작은 컴퓨터이기 때문에 이런 메모리가 내장되어 있다. 휘발성메모리 비휘발성 메모리 둘 다 존재하지만 그 중에서
EEPROM(Electrocally Erasable Programmable Read-Only Memory)은 비휘발성 메모리로 저장하고 싶은 작은 변수값이나 상태를 저장하기에 사용하기 좋은 메모리이다.
NO | 함수 | 정보 |
1 | read(address) | 해당하는 주소에 있는 값을 읽어온다 |
2 | write(address, value) | 해당하는 주소에 value에 해당하는 값을 쓴다 |
/* * EEPROM Write * * Stores values read from analog input 0 into the EEPROM. * These values will stay in the EEPROM when the board is * turned off and may be retrieved later by another sketch. */ #include <EEPROM.h> //EEPROM의 처음 시작할 주소 지정 int addr = 0; void setup() { Serial.begin(9600); } void loop() { //아날로그 데이터는 1부터 1023까지 받을 수 있지만 //EEPROM은 255까지 밖에 못받기 때문에 / 4를 한다 int val = analogRead(0) / 4; Serial.println(val); //EEPROM에 아날로그 0번핀에서 받는 값을 입력한다 //이 값들은 전원이 나가도 저장된다 EEPROM.write(addr, val); //주소를 1씩 증가시켜 다음 주소를 가져온다 //주소가 512가 되면 다시 0부터 시작한다 addr = addr + 1; if (addr == 512) addr = 0; delay(100); }
//아날로그 데이터는 1부터 1023까지 받을 수 있지만 //EEPROM은 255까지 밖에 못받기 때문에 / 4를 한다 int val = analogRead(0) / 4; Serial.println(val); //EEPROM에 아날로그 0번핀에서 받는 값을 입력한다 //이 값들은 전원이 나가도 저장된다 EEPROM.write(addr, val);
/* * EEPROM Read * * Reads the value of each byte of the EEPROM and prints it * to the computer. * This example code is in the public domain. */ #include <EEPROM.h> //주소는 0부터 시작하기 때문에 주소 초기값으로 0으로 지정 int address = 0; byte value; void setup() { //시리얼 통신을 시작하기 위해 초기화하고 속도를 9600으로 설정 Serial.begin(9600); while (!Serial) { ; // 시리얼포트가 연결될 때까지 기다린다. 레오나르도 보드만 필요한 부분 } } void loop() { // EEPROM의 현재 주소에 있는 값을 value로 읽어 온다 value = EEPROM.read(address); Serial.print(address); Serial.print("\t"); Serial.print(value, DEC); Serial.println(); // 현재주소에서 1 증가시켜서 다음 주소를 가져온다 address = address + 1; // 주소가 512가 되면 주소를 다시 0으로 바꾼다 if (address == 512) address = 0; delay(500); }
/* * EEPROM Clear * * Sets all of the bytes of the EEPROM to 0. * This example code is in the public domain. */ #include <EEPROM.h> void setup() { // 0부터 512까지의 주소에 있는 값을 0으로 변경한다 for (int i = 0; i < 512; i++) EEPROM.write(i, 0); // 변경이 완료되면 13번 LED를 깜빡거린다 digitalWrite(13, HIGH); } void loop() { }
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!