Arduino-Math Function

This article details the use of the Arduino Math function.

The Math function can be used to compare numbers, calculate absolute values, powers of magnitude, square roots, and more.

For other Arduino functions and libraries, please refer to the following article.

TOC

Math Functions

FunctionsParametersReturnsExplanation
min(x, y)x: The first number
y: The second number
The smaller of the two numbersCalculates the minimum of two numbers
max(x, y)x: The first number
y: The second number
The bigger of the two numbersCalculates the maximum of two numbers
abs(x)x: The numberThe absolute valueCalculates the absolute value of the number
constrain(x, a, b)x: The number to constrain
a: Minimum value of the range
b: Maximum value of the range
The value in the rangeReturns the number in the range
(Minimum or maximum value of the range if outside the range)
long map(long value, long fromLow, long fromHigh, long toLow, long toHigh)value: The number to map
fromLow: The lower value of the current range
fromHigh: The upper value of the current range
toLow: The lower value of the target range
toHigh: The upper value of the target range
The mapped valueRe-maps the number from one range to another
double pow(float base, float exponent)base: The base number
exponent: The multiplier number
The value of the power multiplied byCalculates the value of the number raised to the power
double sqrt(x)x: The numberThe value of the square rootCalculates the square root of the number
sq(x)x: The numberThe value of the square for the numberCalculates the square of the number

min()/Calculates the minimum of two numbers

min()/Calculates the minimum of two numbers
  • Function: min(x, y)
  • Parameter: x⇒The first number
  • : y⇒The second number
  • Return: The smaller of the two numbers

The min() function compares two numbers specified in its parameters and returns the smaller number.

max()/Calculates the maximum of two numbers

max()/Calculates the maximum of two numbers
  • Function: max(x, y)
  • Parameter: x⇒The first number
  • : y⇒The second number
  • Return: The bigger of the two numbers

The max() function compares two numbers specified in its parameters and returns the larger number.

abs()/Calculates the absolute value of the number

abs()/Calculates the absolute value of the number
  • Function: abs(x)
  • Parameter: x⇒The number
  • Return: The absolute value

The abs() function returns the absolute value of a number specified by its parameter.

constrain()/Returns the number in the range

constrain()/Returns the number in the range
  • Function: constrain(x, a, b)
  • Parameter: x⇒The number to constrain
  • : a⇒Minimum value of the range
  • : b⇒Maximum value of the range
  • Return: The value in the range

The constrain() function returns a value within a range, with the target number and the minimum and maximum values of the range as parameters.

map()/Re-maps the number from one range to another

map()/Re-maps the number from one range to another
  • Function: long map(long value, long fromLow, long fromHigh, long toLow, long toHigh)
  • Parameter: value⇒The number to map
  • : fromLow⇒The lower value of the current range
  • : fromHigh⇒The upper value of the current range
  • : toLow⇒The lower value of the target range
  • : toHigh⇒The upper value of the target range
  • Return: The mapped value

The map() function converts the target value from the original range to the converted range by a percentage.

pow()/Calculates the value of the number raised to the power

pow()/Calculates the value of the number raised to the power
  • Function: double pow(float base, float exponent)
  • Parameter: base⇒The base number
  • : exponent⇒The multiplier number
  • Return: The value of the power multiplied by

The pow() function returns a power of a number, with a base and a multiplier specified as parameters.

sqrt()/Calculates the square root of the number

sqrt()/Calculates the square root of the number
  • Function: double sqrt(x)
  • Parameter: x⇒The number
  • Return: The value of the square root

The sqrt() function returns a value calculated by the square root of the number specified in the parameter.

sq()/Calculates the square of the number

sq()/Calculates the square of the number
  • Function: sq(x)
  • Parameter: x⇒The number
  • Return: The value of the square for the number

The sq() function returns a value calculated as the square of the number specified in the parameter.

Sample Programs (Sample Sketches)

Parts List
  1. Arduino Uno
  2. USB Cable
  3. PC(For Program Writing and Serial Monitor)

min()/Calculates the minimum of two numbers

void setup() {
  Serial.begin(9600);//Initialize serial communication at 9600bps
}

void loop() {
  unsigned char cal;//Declare "cal" as a variable with unsigned char

  cal = min(5, 3);//Compare 5 and 3, Assign smaller 3 to cal
  Serial.print("Minimum: ");//Send string "Minimum: "
  Serial.println(cal);//Send number "3" (smaller value), New line

  delay(1000);//Wait 1sec (1000msec)
}
Serial Monitor Example

Minimum: 3
Minimum: 3
Minimum: 3
Minimum: 3
Minimum: 3
Minimum: 3
Minimum: 3
Minimum: 3
Minimum: 3
Minimum: 3

The sample program compares the numbers "5" and "3" and displays the smaller number "3" on the serial monitor.

max()/Calculates the maximum of two numbers

void setup() {
  Serial.begin(9600);//Initialize serial communication at 9600bps
}

void loop() {
  unsigned char cal;//Declare "cal" as a variable with unsigned char

  cal = min(5, 3);//Compare 5 and 3, Assign larger 5 to cal
  Serial.print("Max: ");//Send string "Max: "
  Serial.println(cal);//Send number "5" (larger value), New line

  delay(1000);//Wait 1sec (1000msec)
}
Serial Monitor Example

Max: 5
Max: 5
Max: 5
Max: 5
Max: 5
Max: 5
Max: 5
Max: 5
Max: 5
Max: 5

The sample program compares the numbers "5" and "3" and displays the larger number "5" on the serial monitor.

abs()/Calculates the absolute value of the number

void setup() {
  Serial.begin(9600);//Initialize serial communication at 9600bps
}

void loop() {
  int cal;//Declare "cal" as a variable with int

  cal = abs(5);//Assign the absolute value of +5 to cal
  Serial.print("Absolute Value of +5: ");//Send string "Absolute Value of +5: "
  Serial.println(cal);//Send number "5" (absolute value of +5), New line

  cal = abs(-5);//Assign the absolute value of -5 to cal
  Serial.print("Absolute Value of -5: ");//Send string "Absolute Value of -5: "
  Serial.println(cal);//Send number "5" (absolute value of -5), New line

  delay(1000);//Wait 1sec (1000msec)
}
Serial Monitor Example

Absolute Value of +5: 5
Absolute Value of -5: 5
Absolute Value of +5: 5
Absolute Value of -5: 5
Absolute Value of +5: 5
Absolute Value of -5: 5
Absolute Value of +5: 5
Absolute Value of -5: 5
Absolute Value of +5: 5
Absolute Value of -5: 5

The sample program displays the absolute values "5" for "+5" and "5" for "-5" on the serial monitor.

constrain()/Returns the number in the range

void setup() {
  Serial.begin(9600);//Initialize serial communication at 9600bps
}

void loop() {
  unsigned char cal;//Declare "cal" as a variable with unsigned char

  cal = constrain(5, 3, 7);//Since the target value "5" is in the range 3 to 7, Assign 5 to cal
  Serial.print("x=5, low=3, high=7: ");//Send string "x=5, low=3, high=7: "
  Serial.println(cal);//Send number "5", New line

  cal = constrain(1, 3, 7);//Since the target value "1" is smaller than the range 3 to 7, Assign 3 to cal
  Serial.print("x=1, low=3, high=7: ");//Send string "x=1, low=3, high=7: "
  Serial.println(cal);//Send number "3", New line

  cal = constrain(10, 3, 7);//Since the target value "10" is lager than the range 3 to 7, Assign 7 to cal
  Serial.print("x=10, low=3, high=7: ");//Send string "x=10, low=3, high=7: "
  Serial.println(cal);//Send number "7", New line

  delay(1000);//Wait 1sec (1000msec)
}
Serial Monitor Example

x=5, low=3, high=7: 5
x=1, low=3, high=7: 3
x=10, low=3, high=7: 7
x=5, low=3, high=7: 5
x=1, low=3, high=7: 3
x=10, low=3, high=7: 7
x=5, low=3, high=7: 5
x=1, low=3, high=7: 3
x=10, low=3, high=7: 7

In the sample program, if the target value is within the range, the value is displayed on the serial monitor as it is, and if the target value is outside the range, the minimum or maximum value of the range value is displayed on the serial monitor.

map()/Re-maps the number from one range to another

void setup() {
  Serial.begin(9600);//Initialize serial communication at 9600bps
}

void loop() {
  long cal;//Declare "cal" as a variable with long

  cal = map(5, 1, 10, 10, 100);//The target value "5" is 10 times the ratio of the range 10-100 to be converted from the original range 1-10, So assign 50 to cal
  Serial.print("x=5 from low=1 from high=10 to low=10 to high=100: ");//Send string "x=5 from low=1 from high=10 to low=10 to high=100: "
  Serial.println(cal);//Send number "50", New line

  delay(1000);//Wait 1sec (1000msec)
}
Serial Monitor Example

x=5 from low=1 from high=10 to low=10 to high=100: 50
x=5 from low=1 from high=10 to low=10 to high=100: 50
x=5 from low=1 from high=10 to low=10 to high=100: 50
x=5 from low=1 from high=10 to low=10 to high=100: 50
x=5 from low=1 from high=10 to low=10 to high=100: 50
x=5 from low=1 from high=10 to low=10 to high=100: 50
x=5 from low=1 from high=10 to low=10 to high=100: 50
x=5 from low=1 from high=10 to low=10 to high=100: 50
x=5 from low=1 from high=10 to low=10 to high=100: 50
x=5 from low=1 from high=10 to low=10 to high=100: 50

The sample program displays the target value "5" multiplied by 10, "50", on the serial monitor because the ratio of the original range 1-10 to the conversion target range 10-100 is 10 times.

pow()/Calculates the value of the number raised to the power

void setup() {
  Serial.begin(9600);//Initialize serial communication at 9600bps
}

void loop() {
  double cal;//Declare "cal" as a variable with double

  cal = pow(2, 3);//Since 2 cubed, Assign 8.00 to cal
  Serial.print("2 Cubed: ");//Send string "2 Cubed: "
  Serial.println(cal);//Send number "8.00", New line

  delay(1000);//Wait 1sec (1000msec)
}
Serial Monitor Example

2 Cubed: 8.00
2 Cubed: 8.00
2 Cubed: 8.00
2 Cubed: 8.00
2 Cubed: 8.00
2 Cubed: 8.00
2 Cubed: 8.00
2 Cubed: 8.00
2 Cubed: 8.00
2 Cubed: 8.00

The sample program displays "8.00" calculated as the "2 cubed" on the serial monitor.

sqrt()/Calculates the square root of the number

void setup() {
  Serial.begin(9600);//Initialize serial communication at 9600bps
}

void loop() {
  double cal;//Declare "cal" as a variable with double

  cal = sqrt(4);//Since square root of 4, Assign 2.00 to cal
  Serial.print("Square Root of 4: ");//Send string "Square Root of 4: "
  Serial.println(cal);//Send number "2.00", New line

  cal = sqrt(5);//Since square root of 5, Assign 2.24 to cal
  Serial.print("Square Root of 5: ");//Send string "Square Root of 5: "
  Serial.println(cal);//Send number "2.24", New line

  delay(1000);//Wait 1sec (1000msec)
}
Serial Monitor Example

Square Root of 4: 2.00
Square Root of 5: 2.24
Square Root of 4: 2.00
Square Root of 5: 2.24
Square Root of 4: 2.00
Square Root of 5: 2.24
Square Root of 4: 2.00
Square Root of 5: 2.24
Square Root of 4: 2.00
Square Root of 5: 2.24

The sample program displays "2.00" calculated as the "square root of 4" and "2.24" calculated as the "square root of 5" on the serial monitor.

sq()/Calculates the square of the number

void setup() {
  Serial.begin(9600);//Initialize serial communication at 9600bps
}

void loop() {
  int cal;//Declare "cal" as a variable with int

  cal = sq(4);//Since 4 squared, Assign 16 to cal
  Serial.print("4 Squared: ");//Send string "4 Squared: "
  Serial.println(cal);//Send number "16", New line

  cal = sq(5);//Since 5 squared, Assign 25 to cal
  Serial.print("5 Squared: ");//Send string "5 Squared: "
  Serial.println(cal);//Send number "25", New line

  delay(1000);//Wait 1sec (1000msec)
}
Serial Monitor Example

4 Squared: 16
5 Squared: 25
4 Squared: 16
5 Squared: 25
4 Squared: 16
5 Squared: 25
4 Squared: 16
5 Squared: 25
4 Squared: 16
5 Squared: 25

The sample program displays "16" calculated as "4 squared" and "25" calculated as "5 squared" on the serial monitor.

Let's share this post !
TOC