Építsük össze a függvényeket!

A függvények olyanok, mint kis téglák, amikből nagyobb dolgokat lehet építeni! Miért nem csinálunk rögtön egy s() meg egy o() függvényt is? Az s() belsejében három ti() van, meg egy kis várakozás a betű végén.

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 s() {
    ti();
    ti();
    ti();
    delay(200);
}

void o() {
    ta();
    ta();
    ta();
    delay(200);
}

void loop() {
    s();
    o();
    s();
    delay(200);        
}

No, már a loop()-ot nézve bárki ki tudja találni, hogy mit fog csinálni ez a program!

Szőnyeg alá a szemetet!

Ez a program izé... olyan izé... Először is igen, a loop() részt nézve tényleg látszik már, hogy mit fog csinálni. Csak az a baj, hogy ott van mellette egy csomó más kód még, ti() meg ta() függvények, meg minden apróság.

Ebben az egy programban egyszerre kétféle dolog van:

Ez olyan, mint a kóla (a lényeg) és a kólásüveg (a maradék). Mindkettőre szükség van, de attól még a lényeg a kóla, ugye?

Praktikus ötlet ezt a két dolgot különválasztani. Szerencsére ez egész könnyű. Csak annyit kell tenni, hogy kattints a jobb-felső részen a pici menügombra, és aztán a New tab menüpontra.

Új lap létrehozása

Adj nevet az új lapnak, én úgy hívom, hogy morzelib. (A lib az angol library, azaz könyvtár rövidítése. Persze itt nem könyvekről van szó. Az igazi könyvtárban könyvek vannak, amiket bárkinek lehet használni. A lib-ben meg programdarabkák (függvények) vannak, amiket bárkinek lehet használni.)

Vegyük ketté a programunkat, és minden morzézással kapcsolatos dolgot mozgassunk át a morzelib-be. A ti(), ta(), s(), o(), s() mind ide jönnek.

A morzelib

Ezek után a főprogramban tényleg csak a lényeg marad:

A főprogram, végre csak a lényeg!

No, ez már döfi :) Ezen már első ránézésre látszik, hogy mit csinál.

Feltetted már azt a kérdést, hogy ha a delay() meg a digitalWrite() meg a többi gyári függvény, azok hol vannak megadva? Természetesen egy másik, "titkos" programlapon, amit automatikusan minden programhoz hozzárak az Arduino IDE.

Feladat: egyszerű Morze-generátor

Készítsd el még néhány morze-betű függvényét! (Természetesen a morzelib-be!) Csinálj programot, ami elmorzézza a nevedet!

Egy pillanatra gondolkozz el rajta, hogy kapcsolóval, relével, ezzel-azzal mennyire lehetetlen lenne ez a feladat, de Neked simán menni fog, így most még példát sem írok ide, mert nem lesz rá szükséged.

Mit tanultunk ebből?

A sokszor használt függvényeket el tudjuk pakolni egy másik programlapra, így a főprogramban a lényegre tudunk koncentrálni.