Arduino Nano V3 only runs sketch correctly after hitting reset or starting serial monitor

If you learn how to use millis() for timing, sure.
But that is very easy, for example like so

void loop() {
  static uint32_t lastSent;
  uint32_t topLoop = millis();
  if (topLoop - lastSent >= sendInterval) {
    lastSent = topLoop;
    send();
  }
}