Making the most of Arduino memory
The Arduino is a very popular and easy-to-use microcontroller development environment - however, projects can easily grow complex, and the limitations of the AVR processor become an issue. One of the key issues is using up all the memory, the subject of this article. (The other key issue is running out of I/O ports.)
In order to make the most of Arduino memory, it is important to understand how much, and what type, of memory is available. The AVR Atmega 168 chips used in newer Arduinos have 16K of Flash program memory, used to store programs. (The older Atmega 8 has 8k.) There is 1K of RAM, used to store program variables during execution. This RAM is cleared when the power is switched off. There is 512 bytes of EEPROM, memory which can also be used to store data for programs, but which is retained even when power is turned off. Finally, it is possible to extend the memory of an Arduino project by using external memory.
I'll cover techniques for making the most of all these. This is meant mostly as a survey of popular techniques, not an exhaustive tutorial. Please refer to the Arduino website for more details.

















