Pues si los valores que devuelve analogread son de rango 0-4096, entiendo que se trata de un valor de 12 bits, es decir, desde 000h hasta FFFh.
Como es más de un byte y menos de dos bytes, supongamos que se quiere enviar el valor ABCh (2748 en decimal). Se podría enviar en dos bytes como 0A-BC. En este caso se obendría el entero desplazando 8 bits hacia la izquierda el primer número y haciendo or exclusivo (|) con el segundo. Sin embargo, supongo que por optimizar la trama de comunicación, se envía como AB-C0. Entonces hay que desplazar AB cuatro bit a la izquierda (AB0) y desplazar C0 cuatro bit a la derecha (0C) y hacer el or exclusivo.
Sin embargo, creo que ahí no está tu problema. ¿Has probado a ver qué valores te devuelvería analogreadVol sin multiplicar por 0.001, es decir, con return analogRead(pin)? Es que llamar a la funcion justamente analogRead es un poco arriesgado.