Arduino is a mini computer therefor it needs memory space to store and execute its code. Each Arduino micro controller board is built with 3 types of memory. The 3 types of Arduino memory are as below:
- EEPROM (Electrically Erasable Programmable Read-Only Memory) is a memory area that used by programmer to store long term information and data.
- Flash memory is a program memory space to store Arduino code or Arduino sketch.
- SRAM (static random access memory) is like the runtime memory in the PC, it is used when a Arduino sketch has been executed and this Arduino memory is use to manipulates runtime variables.
EEPROM and Flash memory are non-volatile. These 2 types of Arduino memory will not be lost after the power is turned off. SRAM is different from the other 2 types of Arduino memory, it is volatile and all information in SRAM will be lost when the power is turned off.
Different Arduino boards are build with different size of the memory. Below are the memory size information for the most common Arduino micro controllers:
- ATMega168 – 16KB Flash, 1KB SRAM, 512Bytes EEPROM.
- ATMega328p – 32KB Flash, 2KB SRAM, 1KB EEPROM.
- ATMega1280 – 128KB Flash, 8KB SRAM, 4KB EEPROM.
- ATMega2560 – 256KB Flash, 8KB SRAM, 4KB EEPROM.
Below is a summary Arduino boards memory comparison chart:
Normally there are 1 KB of Arduino flash memory is reserved to be used by the bootloader.