Функции Arduino

Функции в программированииВ этой статье по программированию Arduino вы узнаете, как писать свои собственные функции и использовать их в своих программах. Подробно объясняется структура и использование функций.

Функции были кратко описаны в первой нашей статье, где указаны некоторые основные факты о функциях:

  1. каждая функция должна иметь уникальное имя,
  2. имя функции следует за круглыми скобками ()
  3. функции имеют тип возвращаемого значения, например void,
  4. тело функции заключено в открывающуюся и закрывающуюся фигурные скобки {}.

Мы начнем с изучения структуры функции, а затем покажем, как писать функции.

Структура функции

Прежде чем функцию можно будет использовать в скетче, ее необходимо создать. Следующий код является примером функции, которая была создана для показа пунктирной линии в среде Arduino IDE.

Приведенный выше код, создающий функцию, называется определением функции. На изображении ниже показаны компоненты функции:

Структура простой функции

Имя функции

Когда мы создаем функцию, ей нужно дать имя. Соглашение об именах для функций такое же, как и для переменных:

  • Имя функции может состоять из буквенно-цифровых символов (от A до Z; от a до z; от 0 до 9) и символа подчеркивания (_).
  • Имя функции не может начинаться с цифры, т.е. цифр от 0 до 9.
  • Имя функции не должно совпадать с ключевым словом языка или существующей функцией.

Имя функции заканчивается круглыми скобками (). В приведенный выше пример функции ничего не передается, поэтому круглые скобки пусты. Передача значений или параметров функциям будет объяснена позже.

Читать также:  Конфигурация статического IP

Тип возврата

Функция должна иметь возвращаемый тип. Функция примера ничего не возвращает, поэтому имеет тип возвращаемого значения void. Возвращение значения из функции будет объяснено в следующей статье.

Тело функции

Тело функции состоит из операторов, заключенных в фигурные скобки {}. Операторы составляют функциональность функции (что функция будет делать при ее вызове).

Когда функция используется, она называется «вызванной». Далее мы рассмотрим, как вызвать функцию.

Вызов функции

Чтобы использовать созданную выше функцию, ее необходимо вызвать в скетче, как показано на рисунке ниже:

В приведенном выше скетче функция DashedLine () создается в нижней части файла, а затем вызывается дважды в верхней части файла, как показано на изображении ниже:

Вызов функции

Чтобы вызвать функцию, используйте имя функции, за которым следует открывающаяся и закрывающаяся круглые скобки. Наконец, завершите оператором, вызывающий функцию, точкой с запятой.

Загрузите скетч в Arduino, а затем откройте окно Монитор порта. Программа покажет текст в терминале, как показано ниже:

Программа Ардуино

При первом вызове функции показывается пунктирная линия, показанная в верхней части изображения. Затем текст записывается в окне Монитор порта с помощью оператора под вызовом функции. Затем функция вызывается снова для показа той же пунктирной линии, которую завершает прямоугольник.

Зачем использовать функции

Функция, использованная в приведенном выше примере, очень проста, поэтому все преимущества использования функций будут видны не сразу.

Читать также:  ШИМ-сигнал в Python

Одним из преимуществ использования функций является то, что они избавляют от необходимости многократно писать один и тот же код в скетче, что экономит время и память. Каждый раз, когда вызывается функция, мы просто повторно используем код, который был написан нами один раз.

Если функцию необходимо изменить, это нужно сделать только один раз, и изменения вступят в силу в каждом месте скетча, в котором вызывается функция. Если функция не использовалась, необходимо было бы найти и изменить каждое место в программе, где находятся операторы для выполнения определенной задачи.

С помощью функций можно разбить скетч на части, что сделает его более модульным и понятным. Функции можно повторно использовать в других программах.

Передача значения функции

На скетче выше длина линии, которую выводит функция, фиксирована в самой функции. Если мы изменим текст, который находится в поле, он может не поместиться в поле должным образом. Функцию нужно изменить, чтобы мы могли задать, линию какого размера она должна показать.

Вышеупомянутая функция может быть изменена, чтобы передать ей значение, которое сообщит, сколько символов должно составлять линию, которую она рисует.

Измененный скетч показан ниже:

В этом скриншоте показано, как работает модифицированный скетч:

Скриншот программы

Функция DashedLine () в приведенном выше скетче изменена так, что ей можно передавать целочисленное значение. Строка должна быть длиной в 24 символа, чтобы в нее поместился новый текст меню, поэтому мы передаем ей значение 24.

Читать также:  RGB-светодиод

Конечно, функция должна быть изменена, чтобы обрабатывать передаваемое ей значение:

Функция должна иметь возможность принимать целочисленное значение, которое ей передается. Тип переменной и имя переменной вставляются между открывающимися и закрывающимися круглыми скобками после имени функции.

Теперь мы можем использовать целочисленную переменную len в теле функции DashedLine (). Переменная будет содержать то значение, которое было передано ей при вызове функции.

Тело скетча использует переменную len в цикле for, чтобы показать правильное количество штрихов, составляющих пунктирную линию окна меню.

Курсор перемещается на следующую строку в Мониторе порта путем вызова Serial.println («»); с пустой строкой.

После того, как функция выполнила последний оператор в своем теле, говорят, что она «вернулась». Когда функция возвращается, выполнение программы продолжается под оператором, который вызвал функцию, т.е. оператор под вызовом функции выполняется следующим.

Вывод

Надеемся, что наша статья в полной мере показала вам всю работу вызова функции и ее предназначение. В следующей статье мы поговорим о возврате значения из функции. Если вам нравятся наши статьи, то, пожалуйста, поделитесь ими в социальных сетях или напишите добрый комментарий под статьей.

С Уважением, МониторБанк

Добавить комментарий