map()

Cette fonction transforme une valeur, que initialement est dans un intervalle déterminé, en une autre valeur comprise dans un nouveau intervalle; de façon que cette modification soit la plus proportionnelle possible.

Syntaxe

map(valeur_entrée, inférieur_entrée, supérieur_entrée, inférieur_sortie, supérieur_sortie);

Dans ce mandat on observe cinq paramètres:

  • valeur_entrée -> c’est le nombre à mapper (à transformer).
  • inférieur_entrée -> c’est la limite inférieur de l’intervalle actuel.
  • supérieur_entrée -> c’est la limite supérieur de l’intervalle actuel.
  • inférieur_sortie -> c’est la limite inférieur de l’intervalle résultat du changement.
  • supérieur_sortie -> c’est la limite supérieur de l’intervalle résultat du changement.

Exemple

Parfois, les valeurs que nous obtenons de la lecture d’un pin, comme par exemple un capteur, peuvent être hors d’une portée déterminée, c’est pour cela que nous devons les transférer à une nouvelle portée afin de pouvoir les utiliser correctement.

La valeur de sortie que nous pouvons donner à une diode es de 0 à 255. C’est son niveau de luminosité, sa lueur. Le problème est que les données du capteur peuvent arriver à 1024. On doit, alors, transformer le résultat; cela dit, passer le résultat à l’échelle 0/255.

int valeurcds;   //Valeur résultat
int lueurLED;  //Valeur envoyée á la LED
void setup(void) {
  Serial.begin(9600);
}
void loop(void) {
  valeurcds = analogRead(0);
  Serial.println(valeurcds);
  /* "valeurcds" sera majeur si l'entourage est plus brillant. Par contre, la LED allumera plus fort si l'entourage est plus sombre. c'est à dire, "lueurLED" est inversement proportionnelle à "valeurcds". On doit invertir "valeurcds" pour que sa valeur change de 0/1023 à 1023/0*/
  valeurcds=1023-valeurcds;
  /*et maintenant nous allons mapper "valeurcds" pour l’accoupler au rang admit de sortie PWM. c'est à dire, passer de 0- 1023 à 0- 255.*/
  lueurLED = map(valeurcds, 0, 1023, 0, 255);
  analogWrite(5, lueurLED);
  delay(100);
}