A függvényekről már volt szó, de bevallom, kicsit lazán magyaráztam. No majd most! Először is, kicsit felejtsd el a függvény matematikai értelmét tíz percre!
A függvény olyan utasításblokk, aminek nevet adhatunk, és a nevét bárhol leírva az A-star végrehajta a függvényt. Ennyi.
Emlékszel, hogy az előző oldalon az S morzézásához háromszor kellett leírni a led be-ki kapcsolását. Mi lenne, ha csinálnánk egy ti no meg mindjárt egy ta nevű függvényt, amiben előadjuk a rövid, meg a hosszú villantást?
void ti() {
digitalWrite(13, HIGH);
delay(100);
digitalWrite(13, LOW);
delay(100);
}
Fú, hogy néz ez ki? A logika a következő:
eredményTípusa függvényneve(paraméterTípus paraméterNév...) {
utasításblokk
}
Jelenleg a függvényünk semmit nem számol. Nem megy bele paraméter, nincs eredménye sem, ezért az eredmény típusa void ami azt jelenti, hogy "semmi" nem jön ki innen (vagy szó szerint: néma).
Mivel nincsenek paraméterek se, ezért a paramétereket felsoroló zárójeles rész belseje is üres.
Egyszerűen le kell írni a nevét, és utána zárójelben a paramétereket. Mivel ennek nincs paramétere, ezért a zárójel belseje üres lesz:
ti();
Hát ez azért nem tűnik nagyon nehéznek! Eszedbe jutott, hogy Te már használtál függvényeket? Például a delay(100) is egy függvényhívás volt, és itt a 100 a paraméter. Mint minden utasítás végére, a függvényhívás végére is pontosvesszőt kell tenni.
void setup() {
pinMode(13, OUTPUT);
}
void ti() {
digitalWrite(13, HIGH);
delay(100);
digitalWrite(13, LOW);
delay(100);
}
void ta() {
digitalWrite(13, HIGH);
delay(200);
digitalWrite(13, LOW);
delay(100);
}
void loop() {
// ez lesz az S
ti();
ti();
ti();
delay(200);
// ez lesz az O
ta();
ta();
ta();
delay(200);
// ez lesz az S
ti();
ti();
ti();
delay(200);
delay(200);
}
Hm, sokkal rövidebb lett! Sőt, még az is látszik, hogy mikor van ti, meg tá, így a programunk olvashatóbb, emiatt könnyebben megérthető és bővíthető lett! Nem rossz, ugye?