unsigned long text_interval = 86400000;
Literal constants are interpreted as ints, in the absence of any directive to the contrary. 86400000 is not an int value. You need to tell the compiler that it isn't by adding UL on the end.
long now = millis();
Why is now not unsigned?
long prev1 = 0;
long prev2 = 0;
Why are prev1 and prev2 not unsigned? Are you expecting time to flow backwards?
I don't see Serial being initialized, or used for debugging. I suppose that there is a reason wy, but I can't imagine what it is.