Está bien escribir datos en serie sin nada conectado.
En el caso (2) "Arduino + chip de interfaz USB", el arduino no tiene idea si hay algo conectado o escuchando el puerto serie . El código transmitirá los bytes y actuará exactamente igual, ya sea que esté conectado a algo o no.
En el caso (1) "arduino con USB integrado" tiene una idea, pero solo descarta los bytes que van para ser transmitido cuando el puerto USB no está conectado.
El hardware serial (caso 2) tiene un búfer de salida, pero eso solo hace que el programa sea un poco más rápido. Cuando el búfer está vacío, una llamada a serial. {Print, write}
colocará bytes en el búfer y continuará. Cuando esté lleno, Serial. {Print, write}
esperará hasta que haya suficiente espacio para poner el resto del mensaje en el búfer y continuar. El hardware UART y las interrupciones que genera seguirán sacando bytes del búfer y transmitiéndolos a una velocidad constante, ya sea que algo esté conectado o no. En cualquier caso, el búfer es de un tamaño fijo y nunca se desbordará.
Hasta donde puedo decir, USB-Serial (caso 1) solo almacena los datos entrantes. Dado que las llamadas a Serial. {Print, write}
no hacen nada cuando no están conectadas, es posible que tomen menos tiempo que de otra manera. Si su código es realmente inseguro sobre la sincronización, eso podría causar un problema, pero dudo que lo haga.
Muchos ejemplos que vienen con el IDE de Arduino tienen el siguiente código que pausa los USB nativos compatibles con Arduino hasta que se inicializa la conexión USB:
while (! Serial) {; // espera a que se conecte el puerto serie. Necesario solo para el puerto USB nativo}
Este código evita que Arduino haga algo hasta que el cable USB esté conectado. Comente o elimine esas 3 líneas si desea que Arduino se ejecute "stand- solo "sin una conexión de cable USB ( Arduino Cookbook p. 117) -
después de borrar esas líneas, si luego conecta un cable USB, el USB se inicializará correctamente y luego verá en su monitor serial todo lo impreso por cualquier posterior serial .print () comandos que se ejecutan. (Probado en un Teensy LC).