사실 아두이노를 쓰면서 프로세서가 느리다고 생각해 본 적은 별로 없습니다. 취미로 만들만한 대부분의 장치에서 아두이노 정도의 속도(16MHz)면 충분했습니다. 다만 메모리 – 특히 램(RAM)은 사정이 틀립니다. 2KB 면 원고지 10장에 불과한데 이걸로 디스플레이 모듈, 통신모듈, 이미지나 긴 문자열을 다루다보면 예상치 않게 문제가 발생합니다.

그래서 아두이노 포럼에서 소개하는 Memory Free 라이브러리가 유용할 때가 있습니다. 아두이노 램 사용량을 체크해야 하는 경우, 이 라이브러리를 설치하시고 원하시는 시점에 freeMemory() 호출해주시면 됩니다. 그리고 Serial 통신으로 메모리 잔량을 확인해보세요.

MemoryFree 라이브러리 배포 : https://github.com/maniacbug/MemoryFree

메모리 부족을 걱정하는 상황에서 Serial 통신을 사용한다는 것이 에러긴 하지만…(Serial.begin() 으로 시작만해도 상당량의 메모리가 없어집니다.) EEPROM에 쓰던지 하는 방법으로 회피해 보세요.

 

예제소스 :

#include <MemoryFree.h>

// Reported free memory with str commented out:
// 1848 bytes
//
// Reported free memory with str and Serial.println(str) uncommented:
// 1834
//
// Difference: 14 bytes (13 ascii chars + null terminator

// 14-bytes string
//char str[] = "Hallo, world!";


void setup() {
    Serial.begin(115200);
}


void loop() {
    //Serial.println(str);

    Serial.print("freeMemory()=");
    Serial.println(freeMemory());

    delay(1000);
}

 

좀 더 상세하게… 메모리를 증가시키면서 테스트 해 볼 수 있는 예제는 아래 링크를 참고하세요.

http://dev.re.kr/60