
Функции — это код в вашей программе, который выполняет определенные действия. Они содержат код для выполнения таких действий, как получение данных с датчика, настройка состояния напряжения на выводе или отображение текста на жидкокристаллическом дисплее. В этой статье мы узнаем, что такое функции и как их использовать в ваших проектах Arduino.
Что такое функция?
Все функции имеют вход и выход:
Входные данные — это информация, которую вы предоставляете функции. Функция выполняет действие на входе и выводит результат на выходе. Например, рассмотрим функцию x = y2 + 1
:

Если мы передадим функции входной параметр y = 3
, функция выполняет математические вычисления и выдает x = 10
:

В программировании мы говорим, что эта функция возвращает значение 10.
Использование функции в программировании Ардуино
Каждая функция имеет возвращаемый тип. Тип возвращаемого значения — это тип данных значения, которое возвращает функция. Если функция возвращает целое число, то тип возвращаемого значения функции будет int
:
int functionName() { // Код функции }
Для функций, которые не возвращают никаких значений, возвращаемый тип называется void
:
void functionName(){ // Код функции }
Код функции заключается в фигурные скобки. Вы можете использовать любой код Arduino внутри функции:
void functionName(){ // код функции находится здесь }
Использование функции в программе называется вызовом функции. Чтобы вызвать функцию, напишите имя функции, открывающие и закрывающие круглые скобки и точку с запятой, например:
void loop(){ functionName(); }
Здесь мы вызываем функцию function Name()
в разделе цикла loop()
, но функции также могут быть вызваны в разделе setup()
.
Предоставление входных данных функции называется «передача аргумента». Когда мы передаем аргументы функции, мы даем ей входные данные, необходимые для выполнения ее задачи. Например, функция digitalWrite() принимает два аргумента — номер вывода и режим вывода:
digitalWrite(pin, mode);
pin и mode называются параметрами. Параметры — это типы данных, которые функция принимает в качестве входных данных. Аргументы — это фактические значения, которые вы предоставляете функции. Например, предположим, что мы используем функцию digitalWrite()
для установки высокого уровня на выводе 10:
digitalWrite(10, HIGH);
pin и mode — это параметры, а 10 и HIGH — это аргументы.
Не каждая функция принимает параметры. Некоторые функции, такие как функция millis(), возвращают значение без каких-либо аргументов.
Пример своей функции в Ардуино
Светодиоды — хороший способ продемонстрировать эту тему, поскольку их можно заменить любым другим устройством, которым можно управлять с помощью сигнала 5В от Arduino. Итак, давайте заставим функцию functionName()
мигать зеленым и синим светодиодами.
Вот детали, которые вам понадобятся для создания этого проекта:
- Arduino Uno
- Соединительные провода
- Макетная плата
- Резистор 220 Ом (2 штуки)
- Светодиоды (2 штуки)
Вот как следует подключить схему:
Как только схема подключена, загрузите этот код в Arduino:
void setup() { pinMode(9, OUTPUT); pinMode(10, OUTPUT); } void loop() { blinkLED(9, 500); blinkLED(10, 1000); } void blinkLED(int pin, int duration) { digitalWrite(pin, HIGH); delay(duration); digitalWrite(pin, LOW); delay(duration); }
Пояснение к коду
В разделе setup()
мы устанавливаем режим контактов 9 и 10 в качестве выходов.
В секции loop()
мы дважды вызываем функцию blinkLED()
— по одному разу для каждого светодиода. Каждый раз, когда вызывается функция, Arduino переходит туда, где определена функция blinkLED()
с помощью void blinkLED(int pin, int duration)
.
В функции blinkLED()
определены два параметра — переменная int
с именем pin и переменная int
с именем duration. В переменной pin будет храниться номер вывода Arduino, введенный в качестве первого аргумента функции blinkLED()
. Переменная duration будет хранить продолжительность мигания светодиода в миллисекундах. Это значение задается вторым аргументом функции.
Когда первая функция blinkLED()
вызывается в секции loop()
, число 9 будет сохранено в переменной pin, а число 500 будет сохранено в переменной duration.
В определении функции blinkLED()
мы переводим уровень напряжения контакта в высокий уровень, а затем делаем задержку на время, хранящееся в переменной продолжительности. Затем мы переводим уровень напряжения контакта в низкий уровень и снова делаем задержку на время, хранящееся в переменной duration. Это заставит светодиод, подключенный к контакту 9, мигать каждые 500 миллисекунд.
Теперь, когда весь код внутри функции blinkLED()
выполнен, Arduino выходит из функции и возвращается к следующей строке кода в разделе loop()
.
Следующая строка кода в разделе loop()
— это вторая функция blinkLED()
. Итак, теперь 10 хранится в переменной pin, а 1000 миллисекунд хранится в переменной duration. Это заставляет светодиод, подключенный к контакту 10, мигать и выключаться каждые 1000 миллисекунд.
Надеюсь, эта статья даст вам некоторое представление о том, как использовать и создавать свои функции на Arduino. Если у вас есть вопросы, обязательно оставьте комментарий ниже, и мы постараемся на него ответить!
Загрузки
Компоненты
- Arduino NANO
- Arduino UNO
- Arduino MEGA
- Набор выводных резисторов
- Наборы выводных светодиодов