Problema mappatura valore sensore di flessione

Salve a tutti, come progetto per la maturità stiamo facendo una mano robotica con arduino, sensori di flessione e servomotori. Abbiamo un problema per quanto riguarda la mappatura dei sensori. Infatti, quando andiamo a piegare il sensore di flessione, quest’ultimo non fa girare il servo in maniera completa. Abbiamo un alimentazione da 0-5V per il circuito, ed il sensore ha una range da 2.2V a 3.2 V con una resistenza da 22K.
map(val, 0, 1023, 0, 179); questi equivale ad un range da 0-5V, come facciamo a mappare per 2.2V e 3.2V?
Grazie, di seguito vi posto il programma:

#include <Servo.h>
//Istanza degli oggetti:
Servo myservo_pollice; //Istanza per motore pollice
Servo myservo_indice; //Istanza per motore indice
Servo myservo_medio; //Istanza per motore medio
Servo myservo_anulare; //Istanza per motore anulare
Servo myservo_mignolo; //Istanza per motore mignolo

//dichiarazione delle variabili:
int pollice;
int indice;
int medio;
int anulare;
int mignolo;

//Variabile di autoritenuta del bottone
int button = 0;

//Dichiarazione flag per conservare il numero Random
int flag = 0;

//Variabile di delay
unsigned long int timing = 0;

//Variabile contentente il numero randomico
int RadNumber;

//Funzioni per il posizionamento della mano:
void Carta(void);
void Sasso(void);
void Forbici(void);

void setup()
{

Serial.begin(9600);

//indicazione locazione servo motori
myservo_pollice.attach(11); //l’oggetto myservo_pollice è sul piedino 11
myservo_indice.attach(10); //l’oggetto myservo_indice è sul piedino 10
myservo_medio.attach(9); //l’oggetto myservo_medio è sul piedino 9
myservo_anulare.attach(6); //l’oggetto myservo_anulare è sul piedino 6
myservo_mignolo.attach(5); //l’oggetto myservo_mignolo è sul piedino 5
}

void loop()
{
//Mappatura corrispondente alla proporzione tra il range(0-1024) e il range (0-180)
pollice = map(analogRead(A0), 348, 853, 0, 179);
indice = map(analogRead(A1), 0, 1023, 0, 179);
medio = map(analogRead(A2), 0, 1023, 0, 179);
anulare = map(analogRead(A3), 0, 1023, 0, 179);
mignolo = map(analogRead(A4), 0, 1023, 0, 179);

//ritardo
delay(1);

//verifica pressione del pulsante
if ((digitalRead(7) == LOW)&&(flag == 0))
{
//generazione di un numero random da 0 a 2
RadNumber = random(3);

//autoritenuta
button = 1;
flag = 1;
}
if (button == 1)
{
//indicazione del valore random all’interno del monitor seriale
Serial.println(RadNumber);

//verifica del valore randomico e posiziomento corrispondente della mano
if(RadNumber == 0)
{
Carta();
}
if(RadNumber == 1)
{
Sasso();
}
if(RadNumber == 2)
{
Forbici();
}
}
else
{
//Posizionamento dei servo motori sulla basee dei valori letti dai sensori
myservo_pollice.write(pollice);
myservo_indice.write(indice);
myservo_medio.write(medio);
myservo_anulare.write(anulare);
myservo_mignolo.write(mignolo);
}

//Durata posizionamento della mano
if ((millis() >= timing + 5000) && (button == 1))
{
timing = millis();

//termine dell’autoritenuta
button = 0;

//Reset del valore randomico
flag = 0;
}
}

//Stati possibili delle mani
void Carta(void)
{
myservo_pollice.write(1);
myservo_indice.write(1);
myservo_medio.write(1);
myservo_anulare.write(1);
myservo_mignolo.write(1);
}

void Sasso(void)
{
myservo_pollice.write(179);
myservo_indice.write(179);
myservo_medio.write(179);
myservo_anulare.write(179);
myservo_mignolo.write(179);

}

void Forbici(void)
{
myservo_pollice.write(179);
myservo_indice.write(1);
myservo_medio.write(1);
myservo_anulare.write(179);
myservo_mignolo.write(179);

}

Allora, prima di tutto essendo il tuo primo post, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione … possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il REGOLAMENTO

… poi, in conformità al suddetto regolamento, punto 7, devi editare il tuo post (in basso a destra del post, bottone More → Modify) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra).

Grazie.

Guglielmo

2.2V 2.2/(5/1023) = 450
3.2V 3.2/(5/1023) = 654

map(analogRead(Ax), 450, 654, 0, 179)