Thanks for taking a look at this.
I had done a fair amount of the code before I got this LCD screen. I do have a 16x2 non-I2C screen lying around, so I could possible try that. What I will do is strip out a bunch of code and see if I still have the same problem with a smaller project.
I'm calling the freeRam() function at the entry to each function. It looks like this:-
int freeRam () {
extern int __heap_start, *__brkval;
int v;
return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}
and comes from here: Arduino Playground - AvailableMemory.
I'll post again when I've had a chance to try this with a smaller project.
Cheers,
Jon