Pessoal, alguem sabe o calculo da função map do arduino?
Estou fazendo um SubVI em LabView e preciso desse calculo, o map gera um valor proporcional ao valor de entrada.
Ex:
porta_analogica = analogRead(A0);
int num = map(porta_analogica, 0, 1023, 0, 255);
o código acima recebe o valor lido da porta analogica A0, que vai de 0 a 1023 e transforma isso para
0 a 255.
Obrigado!
Tags:
É uma regra de três:
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;
}
A função map aceita qualquer tipo de variavel numerica ou só int?
Cara, acho que aceita outros numéricos, mas só testando prá ver.
O long é um inteiro de 32 bits.
Essa função map que eu pus aí em cima realmente recebe inteiros de até 32 bits e devolve um inteiro de 32 bits. Ela não funciona com float, testei.
PS: mas é fácil fazer uma função que funcione com float, claro. Segue abaixo a função com exemplo de uso:
float mapFloat(float x, float in_min, float in_max, float out_min, float out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
void setup()
{
float x=mapFloat(4.5,3.0,5.0,100,200);
Serial.begin(9600);
Serial.println(x);
}
void loop()
{
}
Essa função escreve na serial o valor 175, que é o correto.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por