Приветствую Вас ГостьПятница, 03.05.2024, 10:46

AVR & ARDUINO




Каталог статей

Главная » Статьи » Справочник

Объявление функций

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

Программисты на языке BASIC, в качестве функций используют подпрограммы (GOSUB в BASIC).

Разделения кода на функции имеет ряд преимуществ:

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

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

Пример

Для вызова функции умножения ей передаются параметры данных:

void loop{
 int i = 2;
 int j = 3;
 int k;
 
 k = myMultiplyFunction(i, j); // k содержит 6
}

Созданную функцию необходимо задекларировать вне скобок любой другой функции, таким образом "myMultiplyFunction()" может стоять выше или ниже функции "loop()".

Весь скетч будет выглядеть следующим образом:

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;
}

Еще пример

Следующая функция будет считывать данные с датчика функцией analogRead() и затем рассчитывать среднее арифметическое. Затем созданная функция будет масштабировать данные по 8 битам (0-255) и инвертировать их.

// датчик подключен к выводу 0
int ReadSens_and_Condition(){
 int i;
 int sval;
 
 for (i = 0; i < 5; i++){
 sval = sval + analogRead(0); // сенсор на аналоговом контакте 0
 }
 
 sval = sval / 5; // среднее
 sval = sval / 4; // масштабирование по 8 битам (0 - 255)
 sval = 255 - sval; // инвертирование выходного значения
 return sval;
}

Вызов функции осуществляется присвоением ее переменной.

int sens;
sens = ReadSens_and_Condition();

Справочник

Материалы взяты с официального сайта проекта Arduino и представлены по лицензии Creative Commons Attribution-ShareAlike 3.0 License.



Источник: http://arduino.cc/en/Reference/FunctionDeclaration
Категория: Справочник | Добавил: magi (04.02.2015)
Просмотров: 5360 | Теги: функция, функции | Рейтинг: 5.0/1
Всего комментариев: 0
avatar
Поиск
Вход на сайт
На правах рекламы

Мы переезжаем на сайт Arduino по-русски