Функции Arduino

Функции Arduino


Разбиение исходного кода программы на отдельные фрагменты (будем называть их - функции) позволяет выделять отдельные логические подзадачи, которые в нужный момент выполняются и возвращают управление туда, откуда были "вызваны". Типичная причина создания функции - необходимость осуществлять определенное действие больше одного раза.

Использование функций (или, функциональный подход к программированию) имеет ряд преимуществ:

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

В скетче Arduino должны быть две обязательные функции - setup() и loop(). Остальные функции должны находиться за пределами фигурных скобок этих функций (до или после).

Разберем в качестве примера простую функцию, умножающую два числа.

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

1
2
3
4
5
6
7
8
void loop{
  int i = 2;
  int j = 3;
  int k;
 
  k = myMultiplyFunction(i, j); // в k будет помещен результат "возвращенный"
//функцией  myMultiplyFunction. То есть 6.
}

При этом функция обязательно должна быть объявлена за пределами других функций, например, после функции loop(), перед setup() или после setup() и перед loop()

Целиком текст полученного скетча будет выглядеть так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void setup(){
  Serial.begin(9600);
}
 
void loop() {
  int i = 2;
  int j = 3;
  int k;
 
  k = myMultiplyFunction(i, j); // k теперь равно 6
  Serial.println(k);
  delay(500);
}
 
int myMultiplyFunction(int x, int y){
  int result;
  result = x * y;
  return result;
}

к содержанию ->>

return

Описание

Завершает текущую функцию и возвращает результат в вызвавшую функцию (если необходимо).

Синтаксис

1
2
return;
return value; // обе формы записи допустимы

value: любая переменная или константа

Пример

1
2
3
4
5
6
7
int myAnalogSensor(){       
    if (analogRead(0) > 100) {
        return true;
    else{
        return false;
    }
}

к содержанию ->>





comments powered by Disqus

Спонсорский блок

Группа Вконтакте

VK Widget

Случайные заметки