constrain()

Описание

Ограничивает число в заданном диапазоне. Входным значением этой функции может быть, например, значение датчика, управляющего положением двигателя, а нижняя и верхняя границы функции — физические пределы возможного перемещения.

Синтаксис

Используйте следующую функцию для ограничения диапазона заданной переменной:

constrain(x, a, b)

Параметры

Функция принимает следующие параметры:

  • x: число для ограничения. Допустимые типы данных: все типы данных.

  • a: нижняя граница диапазона. Допустимые типы данных: все типы данных.

  • b: верхняя граница диапазона. Допустимые типы данных: все типы данных.

Возвращаемое значение

Функция возвращает:

  • x: если входной параметр (x) находится между a и b.

  • a: если входной параметр (x) меньше a.

  • b: если входной параметр (x) больше b.

Пример кода

Код задаёт эмулированное значение датчика и выводит ограниченный результат в монитор порта.

int sensVal = 50;  // попробуйте 170 и 5, чтобы проверить работу

void setup() {
  Serial.begin(9600);

  sensVal = constrain(sensVal, 10, 150);  // ограничивает диапазон значений датчика от 10 до 150

  Serial.print("The sensor value is: ");
  Serial.println(sensVal);
}

void loop() {
}

Примечания и предупреждения

Предупреждение

Из-за особенностей реализации функции constrain() избегайте использования других функций внутри скобок — это может привести к некорректным результатам.

Этот код даст некорректные результаты:

int constrainedInput = constrain(Serial.parseInt(), minimumValue, maximumValue);   // избегайте этого

Используйте это вместо:

int input = Serial.parseInt();  // вынесите другие операции за пределы функции constrain
int constrainedInput = constrain(input, minimumValue, maximumValue);

См. также