Функции – это код в вашей программе, который выполняет определенные действия. Они содержат код для выполнения таких действий, как получение данных с датчика, настройка состояния напряжения на выводе или отображение текста на жидкокристаллическом дисплее. В этой статье мы узнаем, что такое функции и как их использовать в ваших проектах 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
- Набор выводных резисторов
- Наборы выводных светодиодов






