Разбиение на сегменты кода функциями позволяет создавать части кода, которые выполняют определенные задания. После выполнения происходит возврат в место, откуда была вызвана функция. Причиной создания функции является необходимость выполнять одинаковое действие несколько раз.
Для программистов, работающих с BASIC, функции в Arduino позволяют использовать подпрограммы (GOSUB в BASIC).
Разделения кода на функции имеет ряд преимуществ:
-
Функции позволяют организовать программу. Очень часто помогают заранее составить концепцию программы.
-
Функции кодируют одно действие в одном месте программы. Далее необходимо только отладить код функции.
-
Функции сокращают шансы на появление ошибки при необходимости изменения кода.
-
Функции сокращают текст скетчей и делают его компактным, т.к. некоторые секции используются много раз.
-
Функции облегчают использование кода в других программах делая его модульным. В этом случае функции обладают еще одним небольшим преимуществом, делая код программы легким для чтения.
Существуют две обязательные функции в скетчах Arduino setup() и loop(). Другие функции должны создаваться за скобками этих функций. В следующем примере будет создана простая функция умножения двух чисел.
Пример

Для вызова функции умножения ей передаются параметры данных:
k = myMultiplyFunction(i, j); |
Созданную функцию необходимо задекларировать вне скобок любой другой функции, таким образом "myMultiplyFunction()" может стоять выше или ниже функции "loop()".
Весь скетч будет выглядеть следующим образом:
k = myMultiplyFunction(i, j); |
int myMultiplyFunction( int x, int y){ |
Еще один пример
Следующая функция будет считывать данные с датчика функцией analogRead() и затем рассчитывать среднее арифметическое. Затем созданная функция будет масштабировать данные по 8 битам (0-255) и инвертировать их. // датчик подключен к выводу 0
int ReadSens_and_Condition(){ |
sval = sval + analogRead(0); |
Вызов функции осуществляется присвоением ее переменной.
sens = ReadSens_and_Condition(); |