아두이노 메모리(RAM) 잔량 확인하기
사실 아두이노를 쓰면서 프로세서가 느리다고 생각해 본 적은 별로 없습니다. 취미로 만들만한 대부분의 장치에서 아두이노 정도의 속도(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); }
좀 더 상세하게… 메모리를 증가시키면서 테스트 해 볼 수 있는 예제는 아래 링크를 참고하세요.