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);