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 14. Koncová tlačítka 15. Práce s tlačítky 16. Ultrazvuk K čemu slouží ultrazvuk? Měření vzdálenosti 17. IR senzor 18. Motory 19. Monitorování robotky 20. Serva (hloupá) 21. Úpravy dálkového ovládání Dokumentace Příklady

Ultrazvuk

K čemu slouží ultrazvuk?

Pokud se náš robot autonomně pohybuje, je poměrně nezbytné před sebou detekovat překážky, aby do nich robot nenarazil. Ultrazvuk umožňuje nejen detekovat předměty, ale také jejich vzdálenost.

Měření vzdálenosti

Pro měření vzdálenosti s ultrazvukem, je možné využít následující funkci:

  • rkUltraMeasure - Změří vzdálenost od překážky a vrátí ji uživateli. Funkce očekává jeden jediný parametr a to číslo ultrazvuku, které chceme použít. Číslo ultrazvuku je v rozmezí 1 do 4.
Měření a výpis vzdálenosti od překážky
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "robotka.h"

void setup() {
    rkConfig cfg;
    rkSetup(cfg);
    
    int vzdalenost = 0;

    while(true){
       vzdalenost = rkUltraMeasure(1);  // zmer vzdalenost a uloz ji do promenne
       printf("Prekazka je vzdalena: %d\n", vzdalenost);
    }
}

Výše uvedený program nejprve načte hodnotu pomocí funkce rkUltraMeasure(). Tuto hodnotu uloží do proměnné vzdalenost a tu následně vypíše.

Rožínání LED podle vzdálenosti objektu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "robotka.h"

void setup() {
    rkConfig cfg;
    rkSetup(cfg);
    
    int vzdalenost = 0;

    while(true){
       vzdalenost = rkUltraMeasure(1);  // zmer vzdalenost a uloz ji do promenne
       if(vzdalenost > 500){    // vzdalenost vetsi nez 500
           rkLedRed(false);
           rkLedGreen(true);
           rkLedYellow(false);

       }
       
       else if(vzdalenost < 200){ // vzdalenost mensí vetsi 200, ale mensi nez 500
           rkLedRed(false);
           rkLedGreen(false);
           rkLedYellow(true);
       }

       else{    // vzdalenost mensí nez 200
           rkLedRed(true);
           rkLedGreen(false);
           rkLedYellow(false);
       }

       printf("Prekazka je vzdalena: %d\n", vzdalenost);
    }
}

Výše uvedený program nejprve změří vzdálenost pomocí ultrazvuku. Pokud je ve větší vzdálenosti než 500 mm, tak rozsvítí zelenou LED -první if. Pokud je vzdálenost více jak 200, ale současně menší než 500 (to řeší else if, který se provede pouze tehdy, pokud je if nesplněný), tak se rozsvítí žlutá LED. Pokud je vzdálenost měnší než 200, tak se rozsvítí červená LED else.

Další kapitola: IR senzor