Když chceme nějaký úkol v programu opakovat často, můžeme si na něj napsat funkci a tu pak jen zavolat.
Funkce je v programu definovaná jen jednou a ta definice začíná slovem function
.
Potom ji v programu můžeme použít kolikrát chceme.
function blikni() {
digitalWrite(2, true);
for (var i = 0; i < 500; i += 1)
var tohleMeNezajima = 0;
digitalWrite(2, false);
for (var i = 0; i < 500; i += 1)
var tohleMeTakyNezajima = 0;
}
blikni();
blikni();
blikni();
Funkce jsou velice důležité, abychom měli v programu pořádek. Každá funkce by měla dělat nějaký zřetelný úkol, a nic dalšího.
Může přitom volat různé jiné funkce – tady například blikni
volá digitalWrite
.
Když program šikovně rozdělíme do funkcí, bude stručný a dobře srozumitelný pro další lidi.
V předchozí ukázce jsme nechávali program napočítat do 500, abychom ho zpomalili a blikání bylo viditelné.
Když chceme počítač nechat čekat, je docela pitomé ho kvůli tomu zaměstnávat počítáním oveček. Spíš bychom chtěli napsat, za jak dlouho se má náš kód spustit, a nechat počítač, ať mezitím odpočívá.
Kód, který se má za vteřinu spustit, zabalíme do funkce.
Potom příkazem setTimeout(jméno_funkce, milisekundy)
požádáme počítač, aby nám tu funkci spustil třeba za pět vteřin.
function budik() {
console.log("Teď se spustil budík.");
}
setTimeout(budik, 5000);
Tento program počká pět vteřin a pak vypíše zprávu do konzole.
Napište program pro ESP32, který po pěti vteřinách rozsvítí diodu a po dalších pěti vteřinách ji zhasne.
Funkce setTimeout
vrací číslo budíku, který nastavila.
Stejné číslo pak můžeme předat funkci clearTimeout
, abychom budík vypnuli.
function budik() {
console.log("Teď se spustil budík.");
}
var cislo = setTimeout(budik, 5000);
clearTimeout(cislo);
Vyzkoušejte si, že když příkaz clearTimeout
spustíte kdykoliv během těch pěti vteřin, zpráva v konzoli se nevypíše.
Když ho spustíte později, už to samozřejmě nejde dohnat.
Napište program, který postupně napočítá od 10 do 1 a potom vypíše něco jako "prásk!" Jak se postaráte o to, aby počítání nepokračovalo v záporných číslech?