Tabla de contenidos

1. Operadores matemáticos básicos
2. La función cuadrado
3. La función raíz cuadrada
4. La función potencia
5. Las funciones min y max
6. El operador módulo
7. La función valor absoluto
8. Matemáticas más avanzadas

En este artículo, aprenderemos a realizar cálculos matemáticos en un programa Arduino. Primero veremos los operadores matemáticos básicos, seguidos de un repaso del orden de las operaciones. Luego veremos cómo realizar operaciones matemáticas más avanzadas como trigonometría, cuadrados, raíces cuadradas, potencias y min/max.

OPERADORES MATEMÁTICOS BÁSICOS

Los operadores matemáticos básicos son el signo más (+) para sumar, el signo menos (-) para restar, un asterisco (*) para multiplicar y una barra inclinada (/) para dividir. Cuando escribimos una expresión matemática o declaramos una variable, utilizamos lo que se llama operador de asignación. El operador de asignación es el signo de igualdad (=). El operador de asignación se utiliza para asignar un valor a una variable. Por ejemplo, cuando declaramosuna variable entera llamada x y la hacemos igual a uno, así:

 int x = 1;

Esto le dice al programa que almacene el entero 1 en la variable x.

Para realizar la suma, utilizamos el operador de adición (+):

 int x = 2 + 1;

Esto almacenará el resultado de 2 + 1 (tres), en la variable x.

La resta se realiza con el operador de sustracción (-):

 int x = 2 – 1;

Esto almacenará el resultado de 2 – 1 (uno) en la variable x.

La multiplicación se realiza con el operador de multiplicación (*):

 int x = 2 * 4;

Esto almacenará el resultado de 2 * 4 (ocho) en la variable x

La división se realiza con el operador de división (/):

 int x = 4 / 2;

Esto almacenará el resultado de 4 / 2 (dos) en la variable x.

También podemos hacer cálculos con variables. Por ejemplo, en lugar de utilizar números enteros en los ejemplos anteriores, podríamos utilizar las variables a y b:

 int x = a / b;

Ahora que estamos hablando de la división, hay una peculiaridad importante que hay que tener en cuenta al dividir números. Echa un vistazo al código siguiente, donde
dividimos cinco entre dos:

 

void setup() {
 Serial.begin(9600);
 int x = 5 / 2;
 Serial.print(x);
}

La respuesta debería ser 2.5, pero si ejecutas el código se imprimirá un número dos en el monitor de serie. Esto sucede porque x fue declarado con el tipo de datos entero. Int sólo funciona con números enteros, por lo que 2,5 se redondea a 2,0.

 Si declaramos x como un float y añadimos decimales a los números enteros así:

 float x = 5.0 / 2.0;

 La respuesta correcta (2,5) debe imprimirse en el monitor serie.

 

ORDEN DE LAS OPERACIONES

Cuando se utilizan expresiones con más de un operador como esta

 int x = 5 + 6 * 2 – 1 / 3;

El orden de las operaciones es importante porque el resultado será diferente según las operaciones que se realicen primero. Por ejemplo, si se suman primero 5 y 6, el resultado es 21,7. Pero si se multiplican primero 6 y 2, el resultado es 16,7.

Entonces, ¿cuál es el orden correcto? Es PEMDAS:

  • Paréntesis
  • Exponentes
  • Multiplicación
  • División
  • Suma
  • Sustracción

Las operaciones dentro de los paréntesis se ejecutan primero, luego los exponentes, luego la multiplicación y la división y finalmente la suma y la resta.

Dado que las matemáticas dentro de los paréntesis se ejecutan primero, pueden utilizarse para controlar el orden de las operaciones.

 

FUNCIONES DE TRIGONOMETRÍA

El Arduino también puede realizar operaciones matemáticas más avanzadas, como la trigonometría. El Arduino ha incorporado funciones para calcular el coseno, el seno y la tangente de un ángulo. La sintaxis de cada función es la siguiente:

float a = cos(b);
float a = sin(b);
float a = tan(b);

LA FUNCIÓN CUADRADO

El Arduino también tiene una función para calcular el cuadrado de un número. Esta función calcula y al cuadrado (y2):

 float x = sq(y);

 LA FUNCIÓN RAÍZ CUADRADA

 Para calcular la raíz cuadrada de un número, utiliza la función raíz cuadrada. Esto calcula la raíz cuadrada de y (√y):

 float x = sqrt(y);

 LA FUNCIÓN POTENCIA

 La función potencia calcula el valor de una base elevada a la potencia de un exponente (yx). La sintaxis es la siguiente

 int x = pow(base, exponent);

 Por ejemplo, para encontrar el resultado de 108, ponga 10 como primer argumento y 8 como segundo argumento:

int x = pow(10, 8);

LAS FUNCIONES MIN Y MAX

El Arduino también tiene funciones que encuentran el valor mínimo y el valor máximo de un par de números.

 La función min() calcula el valor mínimo de dos números cualesquiera:

int x = min(a, b);

La función min() devuelve el menor de los dos valores. Las variables a y b pueden ser de cualquier tipo de datos.

La función max() calcula el valor máximo de dos números cualesquiera:

 int x = max(a, b);

 La función max() devuelve el mayor de los dos valores. Las variables a y b pueden ser de cualquier tipo de datos.

Min y max son útiles para mantener los valores por encima o por debajo de un determinado umbral. Por ejemplo, digamos que quiere asegurarse de que la lectura de un sensor de temperatura nunca supere los 100 grados. Podrías usar la función min() así:

 sensVal = min(temp, 100);

Esto almacenará el menor de los dos números en la variable sensVal. Incluso si temp excede de 100, la función min() seguirá dando como resultado 100.

 EL OPERADOR MÓDULO

El Arduino tiene otro operador que se ocupa de la división llamado módulo. El operador módulo se escribe con el signo de porcentaje:

 int x = a % b;

 El operador módulo realiza la división de un entero y devuelve el resto. Digamos, por ejemplo, que a = 5 y b = 2. Dos se divide en cinco dos veces y nos queda un resto de uno. Así que 5 % 2 sería igual a uno.

LA FUNCIÓN DE VALOR ABSOLUTO

Otra función útil de Arduino es la función de valor absoluto. La función de valor absoluto devuelve el valor positivo de un número negativo. Por ejemplo, |-x| = x. La función abs() de abajo devolverá el valor absoluto de -10, que es 10:

 int x = abs(-10);

 MATEMÁTICAS MÁS AVANZADAS

En realidad, el Arduino es capaz de realizar funciones matemáticas más avanzadas. Estas funciones avanzadas están disponibles en una biblioteca llamada math library. Visita este enlace para obtener más información sobre las funciones que tiene y cómo instalarla.

  Scott Campbell. How to do Math in Arduino Programs. Circuit Basics. https://www.circuitbasics.com/how-to-do-math-in-arduino-programs/