## Stavové stroje [Miroslav "mirek" Biňas](https://bletvaska.github.io) / [**Namakaný webinár**](http://www.namakanyden.sk)
## Správanie zariadení 1. ako ETL 2. ako stavový stroj 3. (kombinácia)
![](images/etl.png) note: * https://www.fivetran.com/learn/data-pipeline-vs-etl
``` [ extract_data ] --> [ transform_data ] --> [ load_data ] ```
### Konečno-stavový automat > Konečnými automatmi modelujeme chovanie jednoduchých objektov, ktoré sa môžu nachádzať v **rôznych stavoch** a **prechádzať medzi nimi** na základe vstupu. notes: * http://voho.eu/wiki/konecny-automat/
## Príklady použitia * dvere - otvorené/zatorené * počítačové hry * postupnosť obrazoviek * ovládanie postavy * výťah, budík, ... - reakcia tlačidiel je iná vzhľadom na to, čo sa s výťahom momentálne deje
[![](images/state-flowchart.png)](https://gameprogrammingpatterns.com/state.html) notes: * toto je ukazka pouzitia stavov v pocitacovej hre * co sa tu deje? co mi viete povedat o tomto obrazku? * jednotlive stavy postavy * prechod medzi stavmi je stlacenim prislusnej klavesy
## Diagram stavov ![](images/state.machine-turnstile.jpg) notes: * stavove stroje vieme jednoducho vizualizovat pomocou diagramov stavov/statovych diagramov * sklada sa z dvoch komponentov * stav - elipsa * prechod medzi stavmi - orientovana sipka
## Návrhový vzor Stav [![](images/state.pattern.png)](https://refactoring.guru/design-patterns/state) notes: * https://refactoring.guru/design-patterns/state
![](images/night.light.gif) ### [Nočné svetlo s detekciou pohybu](https://randomnerdtutorials.com/build-a-night-security-light-with-arduino/) (prípadová štúdia bez použitia prerušení)
[![](images/citron.base.board.jpg)](https://rpishop.cz/pico-karty/3854-cytron-maker-pi-pico-base-deska-pro-pi-pico-pro-zacatecniky.html)
## [Let's Code!](https://excalidraw.com)
## Ďalšie stavy * `Factory Reset` - uvedenie zariadenia do výrobných nastavení * `Error` - stav, do ktorého sa zariadenie dostane pri vzniku chyby * `Sleep` - prechod do režimu spánku * `Alarm` - poplach, ak došlo k pohybu * `EcoMode` - pred vypnutím prejsť do úsporného režimu
## Aké to má výhody? * zjednodušenie logiky programu * jednoduchá rozšíriteľnosť * modularita * testovanie * efektívne spracovanie udalostí
## Otázky?
![qr code](https://api.qrserver.com/v1/create-qr-code/?data=https://bit.ly/4i00P87&size=300x300) (**https://bit.ly/4i00P87**)