Описание функции constrain
Функция constrain “вписывает” значение переменной amt в указанный диапазон от low до high. Если значение переменной входит в диапазон, никаких изменений не происходит. Если значение amt меньше low, то amt присваивается значение low. Если значение amt больше high, то amt присваивается значение high. Сравнение можно проводить с любым типом данных.
Синтаксис
constrain(amt, low, high)
Параметры
- amt – значение, которое нужно проверить.
- low – нижний предел диапазона.
- high – верхний предел диапазона.
Что возвращает
- amp – если значение amt входит в диапазон от low до high;
- low – если значение amt меньше значения low;
- high – если значение amt больше значения high.
Пример использования функции constrain
Зададим диапазон от 50 до 200 и проверим, что произойдет при вызове функции constrain при значениях 5, 100 и 300.
void setup() {
Serial.begin(9600);
}
void loop() {
uint8_t lowVal = 50; // Минимальное значение диапазона
uint8_t highVal = 200; // Максимальное значение диапазона
Serial.print("Low Value:");
Serial.println(lowVal);
Serial.print("High Value:");
Serial.println(highVal);
uint16_t val = 5; // Значение для сравнения
Serial.print("Value before function 'constrain':");
Serial.println(val);
val = constrain(val, lowVal, highVal); // Поскольку значение val = 5, то после использования функции conastrain значение val = 50, минимальное значение диапазона
Serial.print("Value after function 'constrain':");
Serial.println(val);
val = 300; // Значение для сравнения
Serial.print("Value before function 'constrain':");
Serial.println(val);
val = constrain(val, lowVal, highVal); // Поскольку значение val = 300, то после использования функции conastrain значение val = 200, максимальное значение диапазона
Serial.print("Value after function 'constrain':");
Serial.println(val);
val = 100; // Значение для сравнения
Serial.print("Value before function 'constrain':");
Serial.println(val);
val = constrain(val, lowVal, highVal); // Поскольку значение val = 100, то после использования функции conastrain значение val = 100, входит в диапазон от 50 до 200
Serial.print("Value after function 'constrain':");
Serial.println(val);
Serial.println("---");
delay(1000);
}
Код функции constrain
(hardware/arduino/avr/cores/arduino/Arduino.h 1.8.10)
#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))


