109 lines
3.6 KiB
TeX
109 lines
3.6 KiB
TeX
\documentclass[]{scrartcl}
|
||
\usepackage{geometry}
|
||
\geometry{
|
||
a4paper,
|
||
top=18mm,
|
||
bottom=19mm,
|
||
}
|
||
\usepackage[utf8]{inputenc}
|
||
\usepackage[T1]{fontenc}
|
||
\usepackage[pdftex,pdfa,hidelinks,breaklinks]{hyperref}
|
||
\usepackage{url}
|
||
\usepackage[affil-it]{authblk}
|
||
|
||
|
||
\date{\today}
|
||
|
||
\title{Discrete i/o - coffee machine model}
|
||
\author{A. Mirre}
|
||
|
||
\begin{document}
|
||
\affil{FAI UTB ve Zlíně, Softwarové inženýrství (SWI)}
|
||
|
||
\maketitle
|
||
\renewcommand{\contentsname}{Obsah}
|
||
\tableofcontents
|
||
|
||
\newpage
|
||
|
||
\section*{Zadanie}
|
||
\addcontentsline{toc}{section}{Zadání}
|
||
|
||
\begin{enumerate}
|
||
\item Vytvorte program s využitím modelu práčky alebo miesiacej jednotky
|
||
\begin{enumerate}
|
||
\item využite všetky vstupy a výstupy modelu
|
||
\item program bude mat sekvenčné správanie
|
||
\item program by mal využívať displej
|
||
\item kód by mal byť zrozumiteľný
|
||
\end{enumerate}
|
||
\end{enumerate}
|
||
|
||
\subsection{Zdrojové kódy}
|
||
Kód programu je dostupný v git repozitári na adrese:\\
|
||
\url{https://git.dotya.ml/wanderer/proj_pls}\\
|
||
Kód dokumentácie je dostupný v git repozitári na adrese:\\
|
||
\url{https://git.dotya.ml/wanderer/proj_pls-docs}
|
||
|
||
\subsection{Disclaimer}
|
||
Nakoľko nemám k dispozícii vývojovú dosku, mojím jediným overením je v podstate
|
||
len základná syntaktická kontrola kódu pri preklade (po vzore KDS som si
|
||
vytvoril Makefile na zjednodušenie života).
|
||
|
||
\newpage
|
||
|
||
\section{Stavy programu}
|
||
Keďže je program riadený na základe aktuálneho stavu, musel som si ich
|
||
definovať.\\
|
||
Logicky som si rozčlenil beh na tieto hlavné stavy:
|
||
\begin{itemize}
|
||
\item WAITING
|
||
\item PREPARATION
|
||
\item TANKFILLING
|
||
\item MIXING
|
||
\item SERVING
|
||
\end{itemize}
|
||
|
||
\subsection{WAITING}
|
||
Program v stave WAITING čaká na vstupy - stlačenia tlačidiel.\\
|
||
V tomto stave sa spracováva stlačenie tlačidla cukru, ktoré prepínaním stavu\\
|
||
HOWMUCHSUGAR nastavuje hodnoty hladiny cukru od málo po veľa cukru (4 úrovne)
|
||
(nestlačenie tohto tlačidla znamená, že nápoj bude bez cukru).\\
|
||
|
||
\subsection{PREPARATION}
|
||
Vyššie spomenuté je ďalej spracovávané vo funkcii \texttt{handlepreparation()} pomocou
|
||
troch \texttt{switch}-ov - a to pre množstvo cukru, silu aj veľkosť kávového
|
||
nápoja.\\
|
||
Úrovne cukru: nič, trocha, viac alebo najviac.\\
|
||
Úrovne sily kávy: WEAK, MED, STRONG.\\
|
||
Úrovne veľkosti kávy: (L/S ako large alebo small)\\
|
||
\\
|
||
Keď v \texttt{switch}-i vyhodnotíme používateľskú voľbu, voláme vlastné funkcie,
|
||
kde sa sleduje, či na pinoch pripojených na senzor evidujeme, čo chceme (alias sypeme
|
||
cukor \textit{po} úroveň, dolejeme do ďalšej nádrže vodu po nejakú úroveň, do
|
||
ďalšej nádrže (TANK) dosypeme kávový koncentrát po stanovenú úroveň.
|
||
|
||
\subsection{TANKFILLING}
|
||
Keďže sme naplnili nádrže s vodou, cukrom a kávovou zmesou po požadované
|
||
hodnoty, prejdeme na ďalší stav a naplníme hlavý TANK, kde prebieha zmiešavanie
|
||
všetkých ingrediencií. Tento stav mohol byť tiež vhodnejšie pomenovaný
|
||
MIXTANKFILLING.
|
||
|
||
\subsection{MIXING}
|
||
V stave MIXING spustíme mixér, počkáme pár chvíľ a vypneme mixér (nechceme
|
||
predsa shake).
|
||
|
||
\subsection{SERVING}
|
||
V stave SERVING sa obsah nádrže, kde prebiehalo zmiešavanie, vypustí otvorením
|
||
ventilu SV5 do imaginárneho pohára. Pre istotu ventil po krátkom čase
|
||
zatvoríme, aby sa nestalo, že pri príprave ďalšieho nápoja by bol otvorený a
|
||
jednotlivé zmesy by sa bez zmiešania vyliali/vysypali priamo do pohára.
|
||
|
||
\newpage
|
||
\section{Záver}
|
||
Pri práci na tomto projekte som si precvičil prácu s GPIO pinmi a mal som
|
||
možnosť premyslieť si a pokúsiť sa implementovať návrh zjednodušeného automatu
|
||
na kávu (na zákl. modelu mísící jednotka).
|
||
|
||
\end{document}
|