1. Vývojové prostředí 2. Dálkové ovládání 3. Nový projekt 4. První program 5. Formátování kódu 6. Komentáře 7. Proměnná 8. Větvení 9. Cyklus Motivace while for 10. Funkce 11. LEDky 12. LED pásek 13. Sériová linka 14. Koncová tlačítka 15. Práce s tlačítky 16. Ultrazvuk 17. IR senzor 18. Motory 19. Monitorování robotky 20. Serva (hloupá) 21. Úpravy dálkového ovládání Dokumentace Příklady

Cyklus

Motivace

Jsou situace, kdy potřebujeme nějaký kód opakovat. Například když jdeme po ulici, tak také neuděláme pouze jeden krok, ale ten samý krok opakujeme, dokud nedojdeme na chtěné místo. Pokud bychom chtěli bliknout LEDkou, tak bychom napsali něco takového

1
2
3
4
5
6
7
8
9
10
11
#include "robotka.h"

void setup() {
    rkConfig cfg;
    rkSetup(cfg);

    rkLedBlue(true);
    delay(500);
    rkLedBlue(false);
    delay(500);
}

Pokud bychom chtěli bliknout 3x, tak napíšeme něco takovéhoto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "robotka.h"

void setup() {
    rkConfig cfg;
    rkSetup(cfg);

    rkLedBlue(true);
    delay(500);
    rkLedBlue(false);
    delay(500);

    rkLedBlue(true);
    delay(500);
    rkLedBlue(false);
    delay(500);

    rkLedBlue(true);
    delay(500);
    rkLedBlue(false);
    delay(500);
}

Ale co kdybychom chtěli bliknout 1000x? Ano, je možné zavolat funkci blikni() 1000x za sebou, nebo použít hezčí metodu a to pomocí cyklů. Cyklus nám umožňuje provádět danou část kódu opakovaně, dokud je splněná podmínka, takže to do jisté míry souvisí s podmínkami. Máme základní dva druhy cyklů: while a for.

while

Tento druh cyklu se používá v případě, kdy předem nevíme, kolikrát chceme kód opakovat. Například u chůze také neznáme, kolik musíme přesně udělat kroku, abychom někam došli. Tento cyklus obsahuje podmínku, která když platí, tak opakuje kód. Zjednodušeně se dá říci, že se jedná o if, u kterého se opakovaně vyhodnocuje a provádí se kód.

1
2
3
while(podminka){
    ...Co se ma provest pri kazdem opakovani...
}

Jednoduchým příkladem může být například blikání s LED, bliknout s LED dokud je proměnná menší větší než 100.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "robotka.h"

void setup() {
    rkConfig cfg;
    rkSetup(cfg);

    int cislo = 1000;
    while(cislo < 100){
        rkLedBlue(true);
        delay(500);
        rkLedBlue(false);
        delay(500);

        cislo -= 1;
    }
}

for

Tento typ je používán v případě, kdy dopředu známe, kolikrát chceme kód opakovat. Například kdž chceme 10x bliknout s LED.

1
2
3
for(vytvoreni_promenne ; podminka ; operace){
    ...Co se ma provest pri kazdem opakovani...
}

Oproti cyklu while je zde podmínková část složitější, než v případě while cyklu. Skládá se ze 3 částí:

  • Vytvoř proměnnou, kterou využiješ v podmínce
  • Zadej podmínku, která bude udávat, do kdy máme kód opakovat
  • Uprav hodnotu proměnné, pokud je podmínka splněna

Následující program ukazuje, jak bliknout 10x s LED.

1
2
3
4
5
6
7
8
9
10
11
12
13
#include "robotka.h"

void setup() {
    rkConfig cfg;
    rkSetup(cfg);

    for(int pocet_bliku = 0; pocet_bliku < 10; pocet_bliku++){
        rkLedBlue(true);
        delay(500);
        rkLedBlue(false);
        delay(500);
    }
}

Vytvořili jsme proměnnou pocet_bliku, která obsahuje celé číslo 0. Dokud je tato proměnná menší než 10, tak se k ní přičte hodnota 1 a provede se kód.

Další kapitola: Funkce