Você está na página 1de 2

Funo map() do Arduino

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


Descrio
Remapeia um nmero a partir de uma faixa, para outra. Ou
seja, acompanhando a assinatura da funo acima, temos:

Um value de fromLow mapeado para toLow, um valor


de fromHigh para toHigh, e valores intermedirios.
No restringe valores a uma nica faixa, pois valores fora da
faixa so normais e s vezes at teis. A funo constrain()
deve ser usada antes e depois dessa funo, se limites de
faixa so desejados.
Repare que o valor mnimo da faixa de nmeros deve ser
maior ou menor que o valor mximo, para que a funo
map() possa ser usada de forma direta ou reversa, por
exemplo:
y = map(x, 1, 50, 50, 1);

A funo tambm lida com nmeros negativos, veja um


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

que tambm vlido e funciona.


A funo map() usa matemtica de inteiros para no gerar
fraes, quando a matemtica pede por fraes, nesse caso.
Mas restos de fraes so truncados e no arredondados ou
amortizados.

Parmetros
value: o valor a ser mapeado
fromLow: o menor valor da faixa corrente
fromHigh: o maior valor da faixa corrente
toLow: o menor valor da faixa de destino
toHigh: o maior valor da faixa de destino
Retorna
O valor mapeado.
Exemplo
/* Mapeia um valor analogico para 8 bits (0 to 255) */
void setup() {}
void loop()
{
int val = analogRead(0);
val = map(val, 0, 1023, 0, 255);
analogWrite(9, val);
}
Apndice
Para quem gosta de matemtica, segue o cdigo-fonte da
funo:
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;
}

Você também pode gostar