====== 3. Externí periferie ======
===== Cíle cvičení =====
- Ověření funkce časovače ''Ticker''
- Komununikace po UART
- výpis informace do konzole
- ovládání periferie (LED) pomocí jednoduchého příkazu
- Získání dat ze senzoru (např. teplota) a odeslání hodnoty do konzole
- v pravidelných intervalech pomocí časovače
- asynchronně po stisknutí tlačítka
===== Podklady =====
Pro tvorbu vlastního programu můžete využít následující zdrojové kódy:
* prázdný {{ :courses:b0b37nsi:tutorials:00-template.zip |template}}
* vzorová demo {{ :courses:b0b37nsi:tutorials:99-sensors.zip |aplikace}}
Kódy je možné stáhnout i z [[https://gitlab.fel.cvut.cz/viteks/nsi-codes|gitlabu]], který bude průběžně aktualizován.
Neotevírejte ve VS Code celý repozitář, ale postupně přidávejte adresáře do workspace (nebo otevřete přimo workspace, který je součástí repozitáře). Při otevření nadřízeného adresáře nelze v prostředí PlatformIO vybrat defaultní projekt.
Protože ''printf'' v Mbed OS neumí formátovat čísla datového typu ''float'' a ''double'', je třeba provést alternativní převod, např. následující funkcí:
void ftos(float num, char *buff){
if (num<0){
buff[0]='-';
buff[1]='\0';
} else {
buff[0]='\0';
}
int a = (int) abs(num);
char var[11];
sprintf(var, "%d", a);
strcat(buff, var);
strcat(buff, ".");
float var1 = (fabs(num)-(float)a)*100; //2 decimal places
int b = (int) var1;
if (b < 10){
strcat(buff, "0");
}
sprintf(var, "%d", b);
strcat(buff, var);
}