Funciones que se aplican a números y variables numéricas.
Funciones que se aplican a números byte, int, long o float.
Calcula el mínimo de dos números para cualquier tipo de datos devolviendo el número más pequeño.
min(num1,num2);
min(3,6); //3
Calcula el máximo de dos números para cualquier tipo de datos devolviendo el número mayor de los dos.
max(num1,num2);
max(3,6); //6
Calcula el valor absoluto de un número.
abs(num);
abs(2-6); //4 abs(n++); //Dara resultados raros, evitalo
Calcula el cuadrado de un número, osea el número multiplicado por sí mismo.
sq(num);
sq(3); //9
Calcula el valor de un número elevado a una potencia. Se puede usar para elevar un número a una potencia fraccionaria. Esto es útil para generar un mapeo exponencial de valores o curvas.
pow(base,exponente);
pow(3,3); //81
Calcula la raíz cuadrada de un número. retorna un float.
sqrt(num);
sqrt(9); //3
Redondea un numero float hacia arriba.
ceil(num);
ceil(PI); //4
Redondea un numero float hacia abajo.
floor(num);
floor(PI); //3
Calcula el logaritmo de un numero.
log(num);
log(100); //2
Restringe un número para estar dentro de un rango.
constrain(variable,min,max);
int num; constrain(num,10,150); //limita el rango entre 10~150
Reasigna un número de un rango a otro. Es decir, un rango se correlacionaría con otro, pero no restringe dentro del rango..
map(variable,min1,max1,min2,max2);
Esta función usa matemática entera, por lo que no produce fracciones.
int x; map(x, 0, 1023, 0, 255); map(x, 1, 50, 50, 1); map(x, 1, 50, 50, -100);
La función random devuelve un número aleatorio entero de un intervalo de valores especificado entre los valores min (inclusive) y max (hasta max-1).
random(max); random(min, max);
Devuelve un numero tipo long.
int n = random(1024); //Genera un numero entre 0~1023 byte n = random(0,256); //Genera un numero entre 0~255 (max-1)
Si quiere realmente generar un numero aleatorio entre una ejecución y otra debe cambiar el valor de randomSeed(). Una buena manera de hacerlo es esta:
Establece un valor, o semilla, como punto de partida para la función random(). En realidad inicializa el generador de números pseudoaleatorios, haciendo que comience en un punto arbitrario en su secuencia aleatoria. Esta secuencia, aunque es muy larga y aleatoria, siempre es la misma.
void setup(){ randomSeed(analogRead(0)); }
Si el pin A0 esta al aire producirá ruido que es perfecto para usar de semilla.
Si llamas a la función randomSeek() con un numero unsidned long fijo la secuencia random siempre se repetira.
Las funciones trigonométricas de seno, coseno y tangente. Los ángulos los tienes que expresar en radianes (2Pi).
Calcula el seno de un ángulo (en radianes). El resultado será un numero tipo float entre -1 y 1.
sen(angulo);
Puedes sacar provecho de las constantes PI / HALF_PI / TWO_PI.
void setup(){ Serial.begin(9600); } void loop(){ for (float n=0; n<TWO_PI; n += 0.01){ Serial.println(sin(n)); } }
Copia este boceto y mira el resultado en el Serial Plotter.
El angulo en radianes como el resultado son un numero tipo float.
Calcula el coseno de un ángulo (en radianes). El resultado será entre -1 y 1.
cos(angulo);
void setup(){ Serial.begin(9600); } void loop(){ for (float n=0; n<TWO_PI; n += 0.01){ Serial.println(cos(n)); } }
Puedes sacar provecho de las constantes PI / HALF_PI / TWO_PI.
Calcula la tangente de un ángulo (en radianes). El resultado será entre infinito negativo e infinito positivo.
tan(angulo);
const float pi = 3.14; void setup(){ Serial.begin(9600); } void loop(){ for (float n=0; n<TWO_PI; n += 0.01){ Serial.println(tan(n)); } }
El angulo en radianes como el resultado son un numero tipo float.
Puedes sacar provecho de las constantes PI / HALF_PI / TWO_PI.
Arco cuyo seno es el numero indicado. El arco dado debe estar entre -1 y 1. El resultado sera el angulo en radianes.
asin(arco);
void setup(){ Serial.begin(9600); } void loop(){ for (float n=-1; n<1; n += 0.01){ Serial.print(asin(n)); Serial.print(" radianes, es sexagesimal = "); float x = 360*asin(n)/TWO_PI; Serial.println(x); } }
Arco cuyo coseno es el numero indicado. El arco dado debe estar entre -1 y 1. El resultado sera el angulo en radianes.
acos(arco);
void setup(){ Serial.begin(9600); } void loop(){ for (float n=-1; n<1; n += 0.01){ Serial.print(acos(n)); Serial.print(" radianes, es sexagesimal = "); float x = 360*acos(n)/TWO_PI; Serial.println(x); } }
Arco cuyo tangente es el numero indicado. El arco dado puede ser cualquier numero. El resultado sera el angulo en radianes.
atan(arco);
void setup(){ Serial.begin(9600); } void loop(){ for (float n=-10; n<10; n += 0.01){ Serial.print(atan(n)); Serial.print(" radianes, es sexagesimal = "); float x = 360*atan(n)/TWO_PI; Serial.println(x); } }
Arco cuya tangente es y/x. Donde ambos términos son del tipo float.
atan2(x,y);