2020-12-11 23:19:27 +01:00
|
|
|
|
\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}
|
|
|
|
|
|
2020-12-11 23:44:33 +01:00
|
|
|
|
\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).\\
|
|
|
|
|
|
2020-12-11 23:53:57 +01:00
|
|
|
|
\subsection{PREPARATION}
|
2020-12-12 00:00:59 +01:00
|
|
|
|
Vyššie spomenuté je ďalej spracovávané vo funkcii \texttt{handlepreparation()} pomocou
|
2020-12-12 00:10:53 +01:00
|
|
|
|
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ň.
|
2020-12-11 23:53:57 +01:00
|
|
|
|
|
|
|
|
|
\subsection{TANKFILLING}
|
2020-12-15 12:42:11 +01:00
|
|
|
|
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.
|
2020-12-11 23:53:57 +01:00
|
|
|
|
|
|
|
|
|
\subsection{MIXING}
|
2020-12-15 12:42:11 +01:00
|
|
|
|
V stave MIXING spustíme mixér, počkáme pár chvíľ a vypneme mixér (nechceme
|
|
|
|
|
predsa shake).
|
2020-12-11 23:53:57 +01:00
|
|
|
|
|
|
|
|
|
\subsection{SERVING}
|
2020-12-15 12:42:11 +01:00
|
|
|
|
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.
|
2020-12-11 23:44:33 +01:00
|
|
|
|
|
2020-12-11 23:19:27 +01:00
|
|
|
|
\newpage
|
|
|
|
|
\section{Záver}
|
2020-12-15 12:42:11 +01:00
|
|
|
|
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).
|
2020-12-11 23:19:27 +01:00
|
|
|
|
|
|
|
|
|
\end{document}
|