Ha egy hosszabb, bonyolultabb programot írunk már nem elegendő az utasítás blokkokat egyszerűen egymás után írni a főciklusban. Mert lesz olyan blokk amit többször meg kell ismételnünk, sőt lesznek olyan feltételes elágazások vagy ciklusok amik nem azt fogják végrehajtani amit mi szeretnénk. Itt jönnek képbe a függvények. A függvények olyan utasítás blokkok amik a program bármely részéről meghívhatók, viszont addig nem hajtódnak végre míg meg nem hívódnak, tehát a főciklus futása nem befolyásolja őket.
void
setup(){ void
loop(){ void blink5() |
Ez a progi egy olyan függvény
használatát mutatja be ahol nincs átadandó paraméter se vissza
térési
érték. Működéséről csak annyit,
ha elküldünk egy karaktert a soros monitorból akkor az beindítja
a
függvényünket ami ötször
felvillantja a beépített ledet.
Amire figyelni kell: a függvény
meghívása a főciklusból történik a függvény nevével, mindig
zárni kell a hívást pontosvesszővel. pl.: fugg();
A függvények mindig a főciklus után
helyezkednek el. Lezárjuk a loop ciklust a kapcsos zárójellel
és csak utána hozzuk létre a
függvényt.
Ha függvénynek nincs paramétere
akkor a függvény név mindig void-al kezdődik. Pl.: void fugg()
Ha lefut a függvény a return
utasítás segítségével adjuk vissza a program futását a
főciklusnak.
Most
nézzünk meg egy
paraméter
átadást, ilyenkor a függvény hívásnál egy vagy több
paramétert is
továbbítunk a függvény felé.
int
db;
void setup(){
pinMode(13,OUTPUT);
Serial.begin(9600);
}
void loop(){
if(Serial.available()){
db = Serial.read( );
blink5(db-48);
}
}
void blink5(int vill)
{
Serial.println(vill);
for(int i=0;i<vill; i++){
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
return;
}
A szabályok itt is szinte ugyan azok
mint első esetben. Változás a függvény hívásban van, be kell
írni a zárójelek közé a
továbbítandó értéket vagy értékeket. pl.: fugg(szam), fugg(szam,betu)
A függvény fejléce is változik,
ugyan úgy voiddal kezdődik (mivel nincs visszatérési érték )
mint
a paraméterek nélküli függvény, de
a zárójelek között már deklarálni kell egy ugyan olyan típusú
változót mint amilyen a függvény hívásában van. A hívásban
közölt érték ennek a változónak adódik át, a függvény már
ezt a változót használja.
Nézzük meg a harmadik esetet is
ilyenkor a függvénynek visszatérési értéke is van, ez a
következő képpen mutat:
int db;
void setup(){
pinMode(13,OUTPUT);
Serial.begin(9600);
}
void
loop(){
if(Serial.available()){
db = Serial.read( );
Serial.println(blink5(db-48));
}
}
int
blink5(int vill)
{
int ertek= 0;
Serial.println(vill);
for(int i=0;i<vill;i++){
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
ertek = analogRead(0);
}
return ertek;
}
A
visszatérési értéket a
függvény
hívásánál kapjuk vissza, a minta progiban a következő képpen:
Serial.println(blink5(db-48));
Itt a soros monitorra íródik ki a
visszatérési érték, persze előbb meghívja a függvényt,
végrehajtja azt majd ezután tér vissza a kiíratáshoz. A
visszatérési értéket változóban is elmenthetjük:
g = blink5(db-48);
A
függvény fejlécében fel
kell
tüntetni a visszatérési érték típusát, a függvényen belül
létre kell
hozni egy hasonló típusú változót
amivel dolgozni fogunk, majd ennek a változónak az értékét
kell visszaküldeni a return
utasítással visszatérési értékként. pl.: return ertek;
Röviden ennyit a függvények
létrehozásáról és kezeléséről, remélem mindenkinek
megkönnyíti a
további programozást.