Experimenta isto:
const int N = 10;
char inMsg[N+1];
void setup()
{
Serial.begin(9600);
inMsg[N] = 0;
}
void loop()
{
if(Serial.available() >= 10)
{
int i = 0;
while(( i < 10))
{
inMsg[i++] = Serial.read();
}
// teste: imprime array para verificar o conteudo
imprimeMsg();
}
}
void imprimeMsg(){
Serial.println(inMsg);
}
A tua funcão imprime mensagem está errada... certamente que se correres isto várias vezes vais obter resultados diferentes...
O problema ocorre quando fazes isto:
i < (sizeof(inMsg) / sizeof(char))
sizeof(inMsg) é igual a 10... sizeof(char) é sempre igual a 1...
Quando recebes algo na porta série, o if passa a ser válido... mas se só recebeste um valor, para que vais tentar imprimir os valores todos?