map(value,
fromLow, fromHigh, toLow, toHigh)
Descrição
Remapeia um
número a partir de uma faixa, para outra. Ou
seja, acompanhando a assinatura da função acima, temos:
Um value de fromLow mapeado para toLow, um valor de fromHigh para toHigh, e valores intermediários.
Não restringe valores a uma única
faixa, pois valores fora da faixa são normais e às vezes até úteis. A função constrain()
deve ser usada antes e depois dessa função, se limites de faixa são desejados.
Repare que o “valor
mínimo” da faixa de números deve ser maior ou menor que o “valor
máximo”, para que a função map() possa ser usada de forma direta ou reversa,
por exemplo:
y = map(x, 1, 50, 50, 1);
A função
também lida com números negativos, veja um exemplo:
y = map(x, 1, 50, 50,
-100);
que também é
válido e funciona.
A função
map() usa matemática de inteiros para não gerar frações, quando a matemática
pede por frações, nesse caso. Mas restos de frações são truncados e não
arredondados ou amortizados.
Parâmetros
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);
}
void setup() {}
void loop()
{
int val = analogRead(0);
val = map(val, 0, 1023, 0, 255);
analogWrite(9, val);
}
Apêndice
Para quem gosta de
matemática, segue o código-fonte da função:
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;
}
Nenhum comentário:
Postar um comentário