Did this get split off from another topic? It doesn't seem to start with a question.
There's two ways to attack this: write a function that does what you want, when you want or write a library with an object that can do what you want.
I prefer the first method. Each function that has an interval manages its own interval. Something like this...
void loop() {
checkInputs();
sendMonitorOutput();
sendTelemetry();
updateScreen();
}
Each one of those has different intervals. The Serial Monitor output happens at a different rate to the Serial data going to the telemetry radio.
The top of each of those functions looks like:
void sendTelemetry() {
const unsigned long telemetryInterval = 50000; //milliseconds
static unsigned long lastTelemetrySent=0;
if(millis() - lastTelemetrySent < telemetryInterval) return;
lastTelemetrySent = millis();
...
}
Making the last-sent variable local to the function means that no other function can mess with it. You could use the same name for that in every function and they don't interfere with each other. Making it static
means that its value is preserved after the function exits.