Apuntes de Arduino
17. ALGUNAS FUNCIONES MATEMÁTICAS
17.1. constrain (x, a, b)
Restringe un número a estar dentro de un rango definido (limita dicho número). De los parámetros,
"x" es la variable a limitar y "a" y "b" son los extremos inferior y superior del rango al que se limita.
Devuelve "x", si "x" está entre "a" y "b"; devuelve "a" si "x" es menor que "a" y "b" si "x" es mayor
que "b".
Ejemplo
sensVal = constrain (sensVal, 10, 150);
17.2. map (valor, desdeinferior, desdesuperior, hastainferior, hastasuperior)
Re-asigna un número de un rango a otro. Es decir, el valor de desdeinferior se asignaría a
hastainferior, el valor de desdesuperior a hastasuperior, los valores intermedios a valores
intermedios, etc. Devuelve el valor reasignado.
La función map() utiliza operaciones matemáticas de tipo entero por lo que no va a generar
fracciones, aunque fuere el resultado correcto. Los restos fraccionales se truncan (no son
redondeados).
Parámetros
•
valor: el número a reasignar
•
desdeinferior: el límite inferior del rango inicial de valores
•
desdesuperior: el límite superior del rango inicial de valores
•
hastainferior: el límite inferior del rango final de valores
•
hastasuperior: el límite superior del rango final de valores
Ejemplo
/* Re-asignar un valor procedente de una lectura analógica (0 a 1023) a 8 bits (0 a 255) * /
void setup () {}
void loop ()
{
int val = analogRead (0);
val = map (val, 0, 1023, 0, 255);
analogWrite (9, val);
}
Apuntes de Arduino. Tecnología
// limita el rango de valores de sensVar entre 10 y 150
// analogRead devuelve un valor entre 0 y 1023
// el segundo parámetro de analogWrite es un valor entre 0 y 255 que
// se corresponden con una tensión entre 0 y 5 V respectivamente.
32