No entiendo esto: "convierte el valro analogico de 1024 a digital 255" (valor lo entiendo)
Si quieres hacer esto ¿no es más fácil discriminar los dos últimos bits? algo asi: return (analogRead(pin) >> 2)
Además usas un float que después conviertes a int y después le restas 0.5 ¿?
Mejor primero multiplicar por 100 y después restar 50 .¿O estoy muy espeso?
Ojo con las conversiones de tipos que dan muchos dolores de cabeza. Usa float solamente cuando sea imprescindible. Es mi experiencia.