
Описание функции 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)))