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 10. Funkce 11. LEDky 12. LED pásek 13. Sériová linka Motivace 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

Sériová linka

Motivace

V některých případech potřebujeme komunikovat s naším robotem. Například když se snažím odhalit chybu, vypisovat hodnotu senzorů nebo informovat uživatel o ději v programu. Pro tento účel nám poslouží sériová linka.

Sériová linka

Pro komunikaci s PC je možné použít funkciprintf. Tato metoda je oproti již předchozím metodám rozdílná v tom, že nemá pevný počet parametrů. To ale znamená, že je zapotřebí dodržet jistá pravidla formátu těchto parametrů, aby to vůbec fungovalo.

Výpis textu
1
    printf("Hello world!\n");

Tato funkce vypíše text “Hello world!” v terminálu počítače. Tento terminál je možné otevřít v modrém spodním řádku PlatformIO (ikona zásuvky). Text, který chceme vypsat, uzavíráme do uvozovek a znaky \n na konci textu oznaguje přchod na nový řádek (další text se vypisuje na nový řádek). Lze také použít \t, které se také vkládá to uvozovek a říká nám to, že následující text bude odsazen o jeden tabulátor (představte si, že píšete a zmáčknete klávesu TAB).

Výpis hodnot proměnných

Ve většine případů potřebujeme vypsat i nějakou hodnotu proměnné, která nás zajímá. Pro tento případ umožňuje přidat takzvaná formátovací direktiva, která nám to umožní. V textu začínají znakem %:

  • %d - (decimal) označuje celé číslo
  • %f - (float) značí desetinné číslo
  • %c - (char) označuje znak
  • %s - (string) značí řetězec Těchto přepínačů existuje celá řada, ovšem pro naše účely budou bohatě stačit pouze ty výše uvedené. Tato direktiva se vkládají do uvozovek v textu, kde jejich pozice v textu říká, kde bude reálně vypsána daná hodnota. Více o formátovacích řetězcích najdete na wikipedii.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "robotka.h"

void setup() {
    int vek = 15;
    int oblibene_cislo = 10;
    float pi = 3.14;
    std::string text = "Ahoj!";

    rkConfig cfg;
    rkSetup(cfg);

    printf("Moje oblibene cislo je: %d a mam %d let.\n", oblibene_cislo, vek);
    // vypise "Moje oblibene cislo je: 10 a mam 15 let."
    printf("Hodnota cisla PI je: %f\n", pi);
    // vypise "Hodnota cisla PI je: 3.14"
    printf("Muj program rika: %s\n", text.c_str());
    // vypise "Muj program rika: Ahoj!"
}

Při výpisu std::string je potřeba dopsat za jméno proměnné .c_str()! Pokud tak neučiníte Bude vám funkce vypisovat nesmysly, může dokonce “rozbít” celý program.

1
2
    std::string myString = "Ahoj!";
    printf("%s\n", myString.c_str());

Další kapitola: Koncová tlačítka