• Post category:Math
  • Post comments:0 commentaire
  • Post last modified:décembre 29, 2021
  • Temps de lecture :4 min de lecture

map()

Description :

Remappe un nombre d’une plage à une autre. C’est-à-dire qu’une valeur de fromLow serait mappée à toLow , une valeur de fromHigh à toHigh , des valeurs intermédiaires à des valeurs intermédiaires , etc.

Ne contraint pas les valeurs à l’intérieur de la plage, car les valeurs hors plage sont parfois voulues et utiles. La fonction constrain() peut être utilisée avant ou après cette fonction, si des limites aux plages sont souhaitées.

Notez que les « limites inférieures » de l’une ou l’autre plage peuvent être plus grandes ou plus petites que les « limites supérieures », donc la fonction map() peut être utilisée pour inverser une plage de nombres, par exemple

y = map(x, 1, 50, 50, 1);

La fonction gère également bien les nombres négatifs, de sorte que cet exemple

y = map(x, 1, 50, 50, -100);

est également valide et fonctionne bien.

La fonction map() utilise des mathématiques entières et ne générera donc pas de fractions, alors que les mathématiques pourraient indiquer qu’elle devrait le faire. Les restes fractionnaires sont tronqués et ne sont ni arrondis ni moyennés.

Syntaxe :

map(value, fromLow, fromHigh, toLow, toHigh)

Paramètres :

value : le numéro à mapper.
fromLow : la limite inférieure de la plage actuelle de la valeur.
fromHigh : la limite supérieure de la plage actuelle de la valeur.
toLow : la limite inférieure de la plage cible de la valeur.
toHigh : la limite supérieure de la plage cible de la valeur.

Retour :

La valeur mappée.

Exemple de code :

/* Mapper une valeur analogique sur 8 bits (0 à 255) */
void setup() {}

void loop() {
  int val = analogRead(0);
  val = map(val, 0, 1023, 0, 255);
  analogWrite(9, val);
}

 

Pour les mathématiciens, voici toute la fonction

long map(long x, long in_min, long in_max, long out_min, long out_max) {
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

 

Remarques et avertissements :

Comme mentionné précédemment, la fonction map() utilise des mathématiques entières. Ainsi, les fractions peuvent être supprimées à cause de cela. Par exemple, des fractions comme 3/2, 4/3, 5/4 seront toutes renvoyées comme 1 à partir de la fonction map(), malgré leurs valeurs réelles différentes. Donc, si votre projet nécessite des calculs précis (par exemple une tension précise à 3 décimales), veuillez envisager d’éviter map() et d’implémenter les calculs manuellement dans votre code vous-même.


 

Source : https://www.arduino.cc/reference/en/language/functions/math/map/

 

Laisser un commentaire