Eu fiz alguns projetos com o Arduino, mas nunca fiz mais do que um "Hello World" em C. Estou escrevendo minha primeira biblioteca, e muitas coisas orientadas a objetos estão passando por minha cabeça. De qualquer forma, minha biblioteca está funcionando como deveria, passo um float para minha função, formata-a corretamente e a envia por serial. No entanto, eu o implementei de maneira desajeitada. O Guia de Estilo da API do Arduino menciona uma maneira que parece muito melhor:
Ao usar a comunicação serial, permita ao usuário especificar qualquer objeto Stream, em vez de codificar "Serial". Isso tornará sua biblioteca compatível com todas as portas seriais do Mega e do Due e também poderá usar interfaces alternativas como o SoftwareSerial. O objeto Stream pode ser passado para o construtor da sua biblioteca ou para uma função begin () (como referência, não como ponteiro). Veja Firmata 2.3 ou XBee 0.4 para exemplos de cada abordagem.
Alguém pode elaborar sobre como fazer isso, ou me mostrar algum código?