Функции в Ардуино

Функции в Ардуино

Функции — это код в вашей программе, который выполняет определенные действия. Они содержат код для выполнения таких действий, как получение данных с датчика, настройка состояния напряжения на выводе или отображение текста на жидкокристаллическом дисплее. В этой статье мы узнаем, что такое функции и как их использовать в ваших проектах Arduino.

Что такое функция?

Все функции имеют вход и выход:

Структура функции в ардуино
Структура функции в Ардуино

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

Пример математической функции в ардуино

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

Пример простой математической функции с входными данными
Входные данные в этой функции 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 штуки)

Вот как следует подключить схему:

Схема для демонстрации работы написанной нами функции blinkLED

Как только схема подключена, загрузите этот код в 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
  • Набор выводных резисторов
  • Наборы выводных светодиодов
5 3 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии