Lenteur moteur pas à pas

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