Main

Référence : Langage Arduino : [ Mini | Standard | Etendue | Maxi ] Librairies : [ Vue d'ensemble | Synthèse ] Infos : [ Comparaison | Changements ]

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


Description

Ré-étalonne un nombre d'une fourchette de valeur vers une autre fourchette. Ainsi, une valeur basse source sera étalonnée en une valeur basse de destination, une valeur haute source sera étalonnée en une valeur haute de destination, une valeur entre les deux valeurs source sera étalonnée en une valeur entre les deux valeurs destinations, en respectant la proportionnalité. Cette fonction est très utile pour effectuer des changements d'échelle automatiques.

Cette fonction ne contraint pas les valeurs à rester dans les limites indiquées, car les valeurs en dehors de la fourchette sont parfois attendues et utiles. L'instruction constrain() doit être utilisée également avant ou après cette fonction, si les limites de la fourchette utilisée doivent être respectées.

Noter que la limite basse de chaque fourchette peut être supérieure ou inférieure à la limite haute, dès lors l'instruction map() peut être utilisée pour inverser l'ordre des valeurs, par exemple :

y = map(x, 1, 50, 50, 1); // y évolue en sens inverse de x (càd si x = 1, y=50 et inversement)

Cette instruction supporte également des valeurs négatives, tel que dans cet exemple :

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

Cette utilisation est aussi valide et fonctionne normalement.

L'instruction map() utilise des valeurs entières qui ne peuvent fournir les décimales, alors que les calculs le devraient. La partie décimale est tronquée, et les valeurs ne sont pas arrondies ou moyennées.

Syntaxe

map (valeur, limite_basse_source, limite_haute_source, limite_basse_destination, limite_haute_destination)

Paramètres

  • valeur : le nombre à ré-étalonner
  • limite_basse_source: la valeur de la limite inférieure de la fourchette de départ
  • limite_haute_source: la valeur de la limite supérieure de la fourchette de départ
  • limite_basse_destination: la valeur de la limite inférieure de la fourchette de destination
  • limite_haute_destination: la valeur de la limite supérieure de la fourchette de destination

Valeur renvoyée

La valeur ré-étalonnée

Exemple


/* Etalonne une valeur analogique 10 bits (0-1023) sur 8 bits (0-255) */

void setup() {}

void loop()
{
  int val = analogRead(0);
  val = map(val, 0, 1023, 0, 255); // Ré-étalonne la valeur entre 0 et 1023 sur une fourchette entre 0 et 255
  analogWrite(9, val);
}
 

Remarque

Pour les férus de mathématiques, voici la fonction entière et le calcul réalisé par l'instruction map() :


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;
}
 

Commentaires utilisateurs

  • Une fonction très puissante et très utile en pratique qui permet de réaliser une adaptation d'échelle de valeur (entre la valeur d'une conversion analogique numérique brute et la valeur réelle de la tension par exemple) en une seule ligne, là où plusieurs lignes de calcul seraient normalement nécessaires.

Voir également :


Page d'accueil de la référence Arduino en français

Corrections, suggestions et nouvelle documentation peuvent être postées sur le Forum Arduino ou à l'adresse suivante : support_at_mon-club-elec_point_fr

Le texte original de la référence Arduino est sous licence Creative Commons Attribution-ShareAlike 3.0 . Les exemples de code dans la référence sont dans le domaine public.

La présente traduction française commentée a été réalisée par Xavier HINAULT (2010-2012) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.