c'est la différence entre faire les calculs avec des entiers sur 16 bits ou 32 bits. la fonction map() utilise des long donc 32 bits
essayez ce code
void setup() {
Serial.begin(115200);
int x = (945 - 530) * (5 - 2000) / (945 - 530) + 2000;
long y = (945L - 530L) * (5L - 2000L) / (945L - 530L) + 2000L;
Serial.println(x);
Serial.println(y);
}
void loop() {}
je pense que vous verrez 2057 et 5
(par défaut en C++ le compilateur prend un int comme type pour un nombre écrit "en dur" (un literal) et sur UNO un int est sur 16 bits. Si vous mettez L à la fin du nombre, vous dites au compilateur que vous voulez que ce soit un Long donc sur 32 bits et là il n'y a plus de débordement dans les calculs