other tip.
All the time related variables you use to compare with millis() should be unsigned long as millis() itself returns this type.
- AVR Libc Home Page - list of supported functions in Arduino (which is Atmel based)
1607 ==> you're doing quite well imho ![]()
You could check what an empty sketch takes with just the freeRAM() check to have some reference..