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: sevalorsair da faixa de origem, o resultado também sai. Combine comconstrain()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.