Redirigiendo printf() al puerto serie de mi Arduino.

Podría ser más "genérico" el uso de printf si le adjuntáramos cualquier objeto que herede de Print (la base de básicamente todas las librerías de Arduino donde se pueda hacer print).

Aunque veo que la firma de la función debe ser int(char, FILE*); si tan solo hubiera forma de redefinir FILE a cualquier objeto Print (¿tiene sentido intentarlo?), así una sola función se volvería compatible con Serial, Wire, File (librería SD), LiquidCrystal, etc.
¿O será que no hay más remedio que definir una función para cada flujo de salida?