Mudar as variaveis int para unsigned char ou char... quando aplicavel.
Nao usar a funcao delay...
O loop e um ciclo... logo nao faz sentido usares mais um while dentro dele quando o programa nao faz mais nada.
fazer uso de #define para definir constantes.
Nao usar duas variaveis globais para fazer o trabalho de uma.
Usar a mesma instrucao para ligar e desligar os pinos em vez de definir um caso especifico para a posicao zero do vector... podes sempre criar uma excepcao para essa posicao com um if dentro da funcao... ou loop.
Para não usares o delay, procura pelo exemplo blink without delay.
Como eu disse, a função loop é um while que está sempre a correr. Logo, um while dentro dum while não faz sentido neste caso.
Trocar o int por unsigned char é uma boa prática de programação. Tu pediste para aprimorar o código e alguém usar unsigned char em vez de int correctamente é uma boa indicação.
Tanto aux e resgate são variáveis globais
aux=resgate
Logo isto não faz muito sentido.
Não estás a ir no mau sentido, mas como disse os delays não devem ser usados e deves tentar diminuir o código que usas. Vê o que é repetido e como podes combinar as instruções.
Isso da consistencia e um argumento falso... Nao tem puto a ver com consistencia uma vez que apenas o Arduino e que usa a designacao de byte.
Se vamos falar em consistencia com programacao para AVR (principalmente com o compilador que eles usam), entao estariamos a falar de:
uint8_t
uint16_t
int8_t
int16_t
etc, etc...
Ja que e essa a nomenclatura que e usada por quem normalmente desenvolve em cima do AVR-GCC sem as bibliotecas do Arduino.
Como a vasta maioria do codigo que aqui aparece com problemas e especifico para processadores de 8 bits ou AVRs, eu nao vejo o interesse em usar qualquer um destes tipos (excepto em algumas funcoes muito especificas).
Dai usar o unsigned char... claro que, para quem quiser poupar o teclado, pode usar o tipo byte... mas se o objectivo e esse, porque nao definir o tipo b?