aboutsummaryrefslogtreecommitdiffstats
path: root/docs/source/lang/constrain.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/source/lang/constrain.rst')
-rw-r--r--docs/source/lang/constrain.rst65
1 files changed, 65 insertions, 0 deletions
diff --git a/docs/source/lang/constrain.rst b/docs/source/lang/constrain.rst
new file mode 100644
index 0000000..297a2d4
--- /dev/null
+++ b/docs/source/lang/constrain.rst
@@ -0,0 +1,65 @@
+.. highlight:: cpp
+
+.. _lang-constrain:
+
+constrain(x, a, b)
+==================
+
+Description
+-----------
+
+(Macro) Constrains a number to be within a range.
+
+
+Parameters
+----------
+
+**x**: the number to constrain
+
+**a**: the lower end of the range
+
+**b**: the upper end of the range
+
+Returns
+-------
+
+**x**: if **x** is between **a** and **b**
+
+**a**: if **x** is less than **a**
+
+**b**: if **x** is greater than **b**
+
+Example
+-------
+
+::
+
+ // limits range of sensor values to between 10 and 150:
+ sensVal = constrain(sensVal, 10, 150);
+
+
+Warning
+-------
+
+Because of the way ``constrain()`` is implemented, avoid using other
+functions or causing side effects inside the parentheses, as it may
+lead to incorrect results::
+
+ constrain(x,a++,b); // avoid this - yields incorrect results
+
+ constrain(x,a,b); // use this instead-
+ a++; // keep other math outside constrain()
+
+Arduino Compatibility
+---------------------
+
+Maple's implementation of ``constrain()`` is compatible with Arduino.
+
+See also
+--------
+
+- :ref:`min() <lang-min>`
+- :ref:`max() <lang-max>`
+
+
+.. include:: cc-attribution.txt