map()

map(valor, deMin, deMax, paraMin, paraMax)

O map() faz uma regra de três pra você: ele pega um número que está numa faixa e reescala pra outra faixa, mantendo a proporção. O caso clássico é converter a leitura de um potenciômetro (0 a 1023) para o valor de PWM (0 a 255) ou pra graus de um servo (0 a 180).

Sintaxe

map(valor, deMin, deMax, paraMin, paraMax);

Parâmetros

  • valor: o número que você quer converter.
  • deMin / deMax: a faixa original de onde o valor vem.
  • paraMin / paraMax: a faixa de destino para onde ele vai.

Retorno

O valor reescalado (tipo long). A conta usa aritmética inteira, então há truncamento — não espere casas decimais.

Exemplo

void setup() {
  pinMode(9, OUTPUT);
}

void loop() {
  int leitura = analogRead(A0);            // 0 a 1023
  int brilho = map(leitura, 0, 1023, 0, 255);
  analogWrite(9, brilho);
}

Notas e cuidados

  • O map() não limita a saída: se valor sair da faixa de origem, o resultado também sai. Combine com constrain() quando precisar travar.
  • A conta é inteira: frações são cortadas (por exemplo, mapear pra uma faixa pequena pode "perder" valores intermediários).
  • Você pode inverter a faixa (ex.: map(x, 0, 1023, 255, 0)) pra ter um comportamento invertido.

Quer aprender a usar isso em projetos reais, do zero?

Conhecer o Curso Maker