Používanie funkcií v Arduino náčrtoch
Segmentácia kódu na funkcie umožňuje programátorovi vytvárať modulárne časti kódu, ktoré vykonávajú definovanú úlohu a potom sa vrátiť do oblasti kódu, z ktorej bola funkcia „volaná“.
Typický prípad pre vytvorenie funkcie je, keď je potrebné vykonať rovnakú akciu v programe viackrát.
Štandardizácia fragmentov kódu na funkcie má niekoľko výhod:
- Funkcie pomáhajú programátorovi zostať organizovaný.
- Funkcie kodifikujú jednu akciu na jednom mieste, takže funkciu stačí premyslieť a odladiť len raz.
- To tiež znižuje šance na chyby pri úprave, ak je potrebné zmeniť kód.
Vďaka funkciám je celý náčrt menší a kompaktnejší, pretože časti kódu sa mnohokrát opakovane používajú. Uľahčujú opätovné použitie kódu v iných programoch tým, že sú modulárnejšie, a ako pekný vedľajší efekt, používanie funkcií tiež často robí kód čitateľnejším.
V skici Arduina sú stále potrebné dve funkcie:
- setup()
- loop()
Ostatné funkcie musia byť vytvorené mimo zátvoriek týchto dvoch funkcií. Ako príklad vytvoríme jednoduchú funkciu na vynásobenie dvoch čísel.

Popis:
Názov funkcie:
myMultiplyFunction

Dátový typ:
int

Parametre odovzdané funkcii:
x y

Kučeravé zátvorky:
{ }

Aby sme „zavolali“ našu jednoduchú funkciu násobenia, odovzdáme jej parametre dátového typu, ktorý očakáva:
1 void loop(){
2 int i = 2;
3 int j = 3;
4 int k;
5
6 k = myMultiplyFunction(i, j); // k teraz obsahuje 6
7 }
Naša funkcia musí byť deklarovaná mimo akejkoľvek inej funkcie, takže „myMultiplyFunction()“ môže ísť nad alebo pod funkciu „loop()“.
Celý náčrt by potom vyzeral takto:
1 void setup(){
2 Serial.begin(9600);
3 }
4
5 void loop() {
6 int i = 2;
7 int j = 3;
8 int k;
9
10 k = myMultiplyFunction(i, j); // k teraz obsahuje 6
11 Serial.println(k);
12 delay(500);
13 }
14
15 int myMultiplyFunction(int x, int y){
16 int result;
17 result = x * y;
18 return result;
19 }
Ďalší príklad:
Táto funkcia načíta senzor päťkrát pomocou funkcie analogRead() a vypočíta priemer piatich meraní. Potom upraví mierku údajov na 8 bitov (0-255) a invertuje ich, pričom vráti invertovaný výsledok.
1 int ReadSens_and_Condition(){
2 int i;
3 int sval = 0;
4
5 for (i = 0; i < 5; i++){
6 sval = sval + analogRead(0); // snímač na analógovom kolíku 0
7 }
8
9 sval = sval / 5; // priemer
10 sval = sval / 4; // škálovať na 8 bitov (0 - 255)
11 sval = 255 - sval; // invertovať výstup
12 return sval;
13 }
Aby sme zavolali našu funkciu, stačí ju priradiť k premennej.
1 int sens;
2
3 sens = ReadSens_and_Condition();
Ako vidíte, aj keď funkcia nemá parametre a neočakávajú sa žiadne návraty “(” a “)” zátvorky plus ” ; ” musí byť dané.
Pridaj komentár