Expanding program space for the Arduino?

Hey guys, I was wondering if it's possible/easy to expand the program storage space for an Arduino. 14 kB is nice for small projects but insufficient for larger, more complex projects. Ideally it would be a separate integrated circuit that could interface to the microcontroller, but from what I know generally the whole program should be loaded up in its entirety in the "RAM equivalent" so the ATmega168 might be fundamentally limited to the 14 kB there. If this is true then I'm looking to use multiple microcontrollers to create my program in a set of black boxes running parallel to each other OR grabbing a bigger and better microcontroller and having to learn how to program it without the Arduino board. Any suggestions?

Its surprising how much stuff you can do in 14k if you design your code efficiently. Why do you think your program won't fit?

Take a look at the Wiring board, the language is (virtually) identical.


The ATmega328 (or something like that) is expected out early in 2008, and will probably drop onto an arduino without much trouble, doubling program memory (again.) 14k IS a lot of program, as other have said. What are your speed requirements? Another solution might be to implement a basic interpreter and store programs in an external EEPROM or flash memory; a sort of super-scaled "basic stamp."

An then there are the "ARMuino" ARM based systems that some of us are thinking about.

Or you could just use an old PC. Go back a couple generations to "only" a 1GHz Pentium 3, and you can probably pick up a system (256M ram, 10G disk) for less than $100, run linux and "processing" on it, and write bloated code to your heart's content! Use an arduino or a dozen to provide your real-world IO.