Trying to reduce the use of SRAM

other tip.
All the time related variables you use to compare with millis() should be unsigned long as millis() itself returns this type.

1607 ==> you're doing quite well imho :wink:

You could check what an empty sketch takes with just the freeRAM() check to have some reference..