LOL
Entendi, tentarei isto quando chegar em casa, porem, como pode ocupar mais memória, tentarei diminuir os dados, algo como <XX|XX>, onde o primeiro XX seria o numero do relé a ser acionado, e o segundo XX seria o tempo de acionamento.Assim quem sabe me diminuiria um pouco o consumo de memória.
Isso não interfere na memória... interfere na velocidade de transmissão porque estás a duplicar o número de dados que tens de enviar.
Não vou compilar, mas deves conseguir ficar com uma ideia.
int valores[4];
int ptr_valor;
int temp_val[6]; // como é int, vamos imaginar que podemos receber 32327 (ou algo do género)
for (int i = 0; i < 4; i++) { //isto é para sabermos qual é o valor que recebemos.
if (Serial.read() == '<') { //início de trama.
ptr_valor = 0;
while ((temp_val[ptr_valor] = Serial.read()) != '|')
{
ptr_valor++; //passar para o próximo caracter.
}
//quando sairmos deste ciclo, temos um valor.
++ptr_valor = '\0'; //terminar a string, né?
valores[i] = atoi(temp_valor);//converter de string para inteiro.
}
else { //deve ter havido um erro
//tratar do erro...
//isto é para ti
}
Espero ter ajudado. Eu não compilei nem testei, logo... pode estar errado.