<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>https://senzor.robotika.sk/sensorwiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=StudentDTV</id>
	<title>SensorWiki - Príspevky používateľa [sk]</title>
	<link rel="self" type="application/atom+xml" href="https://senzor.robotika.sk/sensorwiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=StudentDTV"/>
	<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php/%C5%A0peci%C3%A1lne:Pr%C3%ADspevky/StudentDTV"/>
	<updated>2026-05-14T20:55:28Z</updated>
	<subtitle>Príspevky používateľa</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14817</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14817"/>
		<updated>2023-06-23T18:54:49Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Overenie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:IMG 20230623 195259.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 195254.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 163601.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Súbory, kód a doplnujuce foto: [[Médiá:Tinak-DTV.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
Po zapnutí zariadenia sa obajavý základná obrazovka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 203616.png|400px|thumb|center|Ukážka funkcie výrobku.]]&lt;br /&gt;
Stlačením tlačidla set sa dostaneme k zmene počtu minút. Pridávame a odoberáme minúty pomocou tlačidiel + a -&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 203723.png|400px|thumb|center|Ukážka funkcie výrobku.]]&lt;br /&gt;
Druhým stlačením sa dostaneme k zmene počtu hodín.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 203742.png|400px|thumb|center|Ukážka funkcie výrobku.]]&lt;br /&gt;
Tretím sa dostaneme späť na základnú obrazovku tenztokrát už ale so zmenenou hodnotou času.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 203802.png|400px|thumb|center|Ukážka funkcie výrobku.]]&lt;br /&gt;
Tlačidlom štart/pauza spustími časovač, pokím časovač beží krokový motror sa bude otáčať a led diódy svietiť.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 204039.png|400px|thumb|center|Ukážka funkcie výrobku.]]&lt;br /&gt;
Po podržaní tlačidla štart alebo skončení časovača sa vrátime na základnú obrazovku.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 204507.png|400px|thumb|center|Ukážka funkcie výrobku.]]&lt;br /&gt;
&lt;br /&gt;
Súbory, kód a doplnujuce foto: [[Médiá:Tinak-DTV.zip]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14816</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14816"/>
		<updated>2023-06-23T18:53:34Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Overenie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:IMG 20230623 195259.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 195254.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 163601.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Súbory, kód a doplnujuce foto: [[Médiá:Tinak-DTV.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
Po zapnutí zariadenia sa obajavý základná obrazovka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 203616.png|400px|thumb|center|Ukážka funkcie výrobku.]]&lt;br /&gt;
Stlačením tlačidla set sa dostaneme k zmene počtu minút. Pridávame a odoberáme minúty pomocou tlačidiel + a -&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 203723.png|400px|thumb|center|Ukážka funkcie výrobku.]]&lt;br /&gt;
Druhým stlačením sa dostaneme k zmene počtu hodín.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 203742.png|400px|thumb|center|Ukážka funkcie výrobku.]]&lt;br /&gt;
Tretím sa dostaneme späť na základnú obrazovku tenztokrát už ale so zmenenou hodnotou času.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 203802.png|400px|thumb|center|Ukážka funkcie výrobku.]]&lt;br /&gt;
Tlačidlom štart/pauza spustími časovač, pokím časovač beží krokový motror sa bude otáčať a led diódy svietiť.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 204039.png|400px|thumb|center|Ukážka funkcie výrobku.]]&lt;br /&gt;
Po podržaní tlačidla štart alebo skončení časovača sa vrátime na základnú obrazovku.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 204507.png|400px|thumb|center|Ukážka funkcie výrobku.]]&lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14815</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14815"/>
		<updated>2023-06-23T18:52:03Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Overenie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:IMG 20230623 195259.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 195254.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 163601.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Súbory, kód a doplnujuce foto: [[Médiá:Tinak-DTV.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
Po zapnutí zariadenia sa obajavý obrazovka menu.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 203616.png|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
Stlačením tlačidla set sa dostaneme k zmene počtu minút. Pridávame a odoberáme minúty pomocou tlačidiel + a -&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 203723.png|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
Druhým stlačením sa dostaneme k zmene počtu hodín.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 203742.png|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
Tretím sa dostaneme späť na základnú obrazovku tenztokrát už ale so zmenenou hodnotou času.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 203802.png|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
Tlačidlom štart/pauza spustími časovač, pokím časovač beží krokový motror sa bude otáčať a led diódy svietiť.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 204039.png|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
Po podržaní tlačidla štart alebo skončení časovača sa vrátime na základnú obrazovku.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 204507.png|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14814</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14814"/>
		<updated>2023-06-23T18:46:03Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Overenie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:IMG 20230623 195259.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 195254.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 163601.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Súbory, kód a doplnujuce foto: [[Médiá:Tinak-DTV.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
Po zapnutí zariadenia sa obajý obrazovka menu.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 203616.png|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 203723.png|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 203742.png|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 203802.png|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 204039.png|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 204507.png|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:Sn%C3%ADmka_obrazovky_2023-06-23_204507.png&amp;diff=14813</id>
		<title>Súbor:Snímka obrazovky 2023-06-23 204507.png</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:Sn%C3%ADmka_obrazovky_2023-06-23_204507.png&amp;diff=14813"/>
		<updated>2023-06-23T18:45:50Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:Sn%C3%ADmka_obrazovky_2023-06-23_204039.png&amp;diff=14812</id>
		<title>Súbor:Snímka obrazovky 2023-06-23 204039.png</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:Sn%C3%ADmka_obrazovky_2023-06-23_204039.png&amp;diff=14812"/>
		<updated>2023-06-23T18:43:08Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:Sn%C3%ADmka_obrazovky_2023-06-23_203802.png&amp;diff=14811</id>
		<title>Súbor:Snímka obrazovky 2023-06-23 203802.png</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:Sn%C3%ADmka_obrazovky_2023-06-23_203802.png&amp;diff=14811"/>
		<updated>2023-06-23T18:42:38Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:Sn%C3%ADmka_obrazovky_2023-06-23_203742.png&amp;diff=14810</id>
		<title>Súbor:Snímka obrazovky 2023-06-23 203742.png</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:Sn%C3%ADmka_obrazovky_2023-06-23_203742.png&amp;diff=14810"/>
		<updated>2023-06-23T18:42:15Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:Sn%C3%ADmka_obrazovky_2023-06-23_203723.png&amp;diff=14809</id>
		<title>Súbor:Snímka obrazovky 2023-06-23 203723.png</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:Sn%C3%ADmka_obrazovky_2023-06-23_203723.png&amp;diff=14809"/>
		<updated>2023-06-23T18:41:55Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14808</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14808"/>
		<updated>2023-06-23T18:41:23Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Overenie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:IMG 20230623 195259.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 195254.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 163601.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Súbory, kód a doplnujuce foto: [[Médiá:Tinak-DTV.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
Po zapnutí zariadenia sa obajý obrazovka menu.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 203616.png|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:Sn%C3%ADmka_obrazovky_2023-06-23_203616.png&amp;diff=14807</id>
		<title>Súbor:Snímka obrazovky 2023-06-23 203616.png</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:Sn%C3%ADmka_obrazovky_2023-06-23_203616.png&amp;diff=14807"/>
		<updated>2023-06-23T18:41:03Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14806</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14806"/>
		<updated>2023-06-23T18:34:53Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Algoritmus a program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:IMG 20230623 195259.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 195254.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 163601.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Súbory, kód a doplnujuce foto: [[Médiá:Tinak-DTV.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14805</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14805"/>
		<updated>2023-06-23T18:34:02Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Algoritmus a program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:IMG 20230623 195259.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 195254.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 163601.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:Tinak-DTV.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:Tinak-DTV.zip&amp;diff=14804</id>
		<title>Súbor:Tinak-DTV.zip</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:Tinak-DTV.zip&amp;diff=14804"/>
		<updated>2023-06-23T18:33:40Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14803</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14803"/>
		<updated>2023-06-23T18:32:47Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Algoritmus a program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:IMG 20230623 195259.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 195254.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 163601.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14802</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14802"/>
		<updated>2023-06-23T18:06:13Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Úvod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:IMG 20230623 195259.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 195254.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 163601.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14801</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14801"/>
		<updated>2023-06-23T18:05:19Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Úvod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:IMG 20230623 195259.jpg|left|IMG 20230623 195254.jpg|right|IMG 20230623 163601.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14800</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14800"/>
		<updated>2023-06-23T18:04:34Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Úvod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:IMG 20230623 195259.jpg|right|IMG 20230623 195254.jpg|IMG 20230623 163601.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 195254.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 163601.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14799</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14799"/>
		<updated>2023-06-23T18:04:05Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Úvod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:IMG 20230623 195259.jpg|right|IMG 20230623 195254.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 195254.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 163601.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14798</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14798"/>
		<updated>2023-06-23T18:03:38Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Úvod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:IMG 20230623 195259.jpg|IMG 20230623 195254.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 195254.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 163601.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14797</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14797"/>
		<updated>2023-06-23T18:03:07Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Úvod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:IMG 20230623 195259.jpg,IMG 20230623 195254.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 195254.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 163601.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14796</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14796"/>
		<updated>2023-06-23T18:02:25Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Úvod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:IMG 20230623 195259.jpg|400px|thumb|right|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 195254.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
[[Obrázok:IMG 20230623 163601.jpg|400px|thumb|left|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:IMG_20230623_163601.jpg&amp;diff=14795</id>
		<title>Súbor:IMG 20230623 163601.jpg</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:IMG_20230623_163601.jpg&amp;diff=14795"/>
		<updated>2023-06-23T18:02:10Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:IMG_20230623_195259.jpg&amp;diff=14794</id>
		<title>Súbor:IMG 20230623 195259.jpg</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:IMG_20230623_195259.jpg&amp;diff=14794"/>
		<updated>2023-06-23T18:01:09Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14793</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14793"/>
		<updated>2023-06-23T18:00:39Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Úvod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:IMG 20230623 195254.jpg|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:IMG_20230623_195254.jpg&amp;diff=14792</id>
		<title>Súbor:IMG 20230623 195254.jpg</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:IMG_20230623_195254.jpg&amp;diff=14792"/>
		<updated>2023-06-23T18:00:05Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14791</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14791"/>
		<updated>2023-06-23T17:06:58Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Algoritmus a program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14790</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14790"/>
		<updated>2023-06-23T17:05:56Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Algoritmus a program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14789</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14789"/>
		<updated>2023-06-23T17:05:47Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Algoritmus a program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14788</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14788"/>
		<updated>2023-06-23T17:05:18Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Algoritmus a program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                   LiquidCrystal.h -Umožňuje ovládanie lcd displeja.&lt;br /&gt;
                   EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky.&lt;br /&gt;
                   Stepper.h -Umožňuje riadenie krokového motora.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14787</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14787"/>
		<updated>2023-06-23T17:04:51Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Algoritmus a program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
LiquidCrystal.h -Umožňuje ovládanie lcd displeja.&lt;br /&gt;
EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky.&lt;br /&gt;
Stepper.h -Umožňuje riadenie krokového motora.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14786</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14786"/>
		<updated>2023-06-23T17:04:29Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Algoritmus a program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                      LiquidCrystal.h -Umožňuje ovládanie lcd displeja.&lt;br /&gt;
                      EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky.&lt;br /&gt;
                      Stepper.h -Umožňuje riadenie krokového motora.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14785</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14785"/>
		<updated>2023-06-23T17:04:19Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Algoritmus a program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                      LiquidCrystal.h -Umožňuje ovládanie lcd displeja.&lt;br /&gt;
                      EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky.&lt;br /&gt;
                      Stepper.h -Umožňuje riadenie krokového motora.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14784</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14784"/>
		<updated>2023-06-23T17:04:00Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Algoritmus a program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                      LiquidCrystal.h -Umožňuje ovládanie lcd displeja.&lt;br /&gt;
                      EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky.&lt;br /&gt;
                      Stepper.h -Umožňuje riadenie krokového motora.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14783</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14783"/>
		<updated>2023-06-23T17:03:44Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Algoritmus a program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                      LiquidCrystal.h -Umožňuje ovládanie lcd displeja.&lt;br /&gt;
                      EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky.&lt;br /&gt;
                      Stepper.h -Umožňuje riadenie krokového motora.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14782</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14782"/>
		<updated>2023-06-23T17:03:28Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Algoritmus a program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                      LiquidCrystal.h -Umožňuje ovládanie lcd displeja.&lt;br /&gt;
                      EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky.&lt;br /&gt;
                      Stepper.h -Umožňuje riadenie krokového motora.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14781</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14781"/>
		<updated>2023-06-23T17:02:09Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Algoritmus a program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                      LiquidCrystal.h -Umožňuje ovládanie lcd displeja.&lt;br /&gt;
                      EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky.&lt;br /&gt;
                      Stepper.h -Umožňuje riadenie krokového motora.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14780</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14780"/>
		<updated>2023-06-23T17:01:43Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Algoritmus a program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                      LiquidCrystal.h -Umožňuje ovládanie lcd displeja.&lt;br /&gt;
                      EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky.&lt;br /&gt;
                      Stepper.h -Umožňuje riadenie krokového motora.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14779</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14779"/>
		<updated>2023-06-23T17:00:48Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Analýza  a opis riešenia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                      LiquidCrystal.h -Umožňuje ovládanie lcd displeja.&lt;br /&gt;
                      EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky.&lt;br /&gt;
                      Stepper.h -Umožňuje riadenie krokového motora.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Kód v prostredí Arduino IDE&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14778</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14778"/>
		<updated>2023-06-23T16:59:57Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Analýza  a opis riešenia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                      LiquidCrystal.h -Umožňuje ovládanie lcd displeja.&lt;br /&gt;
                      EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky.&lt;br /&gt;
                      Stepper.h -Umožňuje riadenie krokového motora.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;AVR C-code&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14777</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14777"/>
		<updated>2023-06-23T16:59:39Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Analýza  a opis riešenia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                      LiquidCrystal.h -Umožňuje ovládanie lcd displeja.&lt;br /&gt;
                      EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky.&lt;br /&gt;
                      Stepper.h -Umožňuje riadenie krokového motora.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;AVR C-code&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14776</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14776"/>
		<updated>2023-06-23T16:59:03Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Analýza  a opis riešenia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
Tanier Je poidstava na ktorú sa položí objek ktorý treba vytvrdiť, je priamo mechanicky spojený s krokovým motorom cez drážku a teda priamo otáčaný. &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
Stĺpiky spúžia na držanie led diód budú zapustené do medziposchodia a pod nimi sa nachádza diera cez ktorú budú diódy napájané.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera ale je upravený aby vzhovoval mojim potrebám. &lt;br /&gt;
Využité sú 3 knižnice:  &lt;br /&gt;
                      LiquidCrystal.h -Umožňuje ovládanie lcd displeja.&lt;br /&gt;
                      EEPROM.h  -Umožnuje uchovanie údajov v pameti aj ked sa doska vypne, napríklad otvorením viečka laebo zlihaním baterky.&lt;br /&gt;
                      Stepper.h -Umožňuje riadenie krokového motora.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;AVR C-code&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14775</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14775"/>
		<updated>2023-06-23T16:51:28Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Analýza  a opis riešenia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;AVR C-code&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14774</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14774"/>
		<updated>2023-06-23T16:49:17Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Analýza  a opis riešenia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
Pozostáva z Arduina, krokového motora, paralelne zapojených diód, a niekolkých ovládacích prvkov.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 184828.png|400px|thumb|center|Schéma zapojenia.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
&lt;br /&gt;
[[Súbor::Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;AVR C-code&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:Sn%C3%ADmka_obrazovky_2023-06-23_184828.png&amp;diff=14773</id>
		<title>Súbor:Snímka obrazovky 2023-06-23 184828.png</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:Sn%C3%ADmka_obrazovky_2023-06-23_184828.png&amp;diff=14773"/>
		<updated>2023-06-23T16:48:44Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14772</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14772"/>
		<updated>2023-06-23T16:44:14Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Analýza  a opis riešenia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia LCD displeja.]]&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli. Zabraňuje mechanickému poškodeniu elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vytvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
&lt;br /&gt;
[[Súbor::Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;AVR C-code&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14771</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14771"/>
		<updated>2023-06-23T16:42:50Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Analýza  a opis riešenia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia LCD displeja.]]&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky, taniera a stlpikov, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
Krabička má dva účeli bráni poškodenie elektrickej časti ktorej velká časť je uložená v priestore pod tanierom a medziposchodím, druhým a hlavným účelom pre ktorý som si ako materíal zvolil drevo je zamedzenie úniku UV žiarenia do vonka.&lt;br /&gt;
Pre lepší celkový výkon a kvalitu vztvrdnutia modelu by sa dala vnútorná časť krabický potiahnuť/natrieť odrazným materiálom napr. hliníkovou fóliou.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
&lt;br /&gt;
[[Súbor::Snímka obrazovky 2023-06-23 183803.png|400px|thumb|center|Model stlpiku.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;AVR C-code&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:Sn%C3%ADmka_obrazovky_2023-06-23_183803.png&amp;diff=14770</id>
		<title>Súbor:Snímka obrazovky 2023-06-23 183803.png</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=S%C3%BAbor:Sn%C3%ADmka_obrazovky_2023-06-23_183803.png&amp;diff=14770"/>
		<updated>2023-06-23T16:38:17Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14769</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14769"/>
		<updated>2023-06-23T16:35:40Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Analýza  a opis riešenia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia LCD displeja.]]&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky a taniera, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|center|Celá Krabička.]]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|center|Rozložená krabička.]]&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;AVR C-code&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14768</id>
		<title>Zariadenie na vytvrdzovanie resinu pre MLSA 3D tlačiarne</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=Zariadenie_na_vytvrdzovanie_resinu_pre_MLSA_3D_tla%C4%8Diarne&amp;diff=14768"/>
		<updated>2023-06-23T16:35:03Z</updated>

		<summary type="html">&lt;p&gt;StudentDTV: /* Analýza  a opis riešenia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Záverečný projekt predmetu DTV / LS2023 - &#039;&#039;&#039;Jakub Tinák&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Vytvrdzovanie resinu po 3D tlači je súčasťou post Procesingu, aby som sa nemusel spoliehať na prirodzený zdroj UV-svetla -&amp;gt; slnko, som sa rozhodol ako semestrálny projekt vypracoavť zariadenie ktoré mi s tým pomôže.&lt;br /&gt;
Ako zdroj UV svetla som použil UV diody v 3 stĺpikoch vztlačených z resinu, tieto budú svietiť na rotujúcu platformu ktorou bude otáčať krokový motor, o zobrazenie zostávajúceho času sa stará lcd displej a na ovládanie slúžia 4 tlačidlá.&lt;br /&gt;
Vzhľadom na to, že UV svetlo je očiam škodlivé som pridal NO-kontakt ktorý kontroluje či je veko zavreté.&lt;br /&gt;
&lt;br /&gt;
[[Obrázok:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Zapojenie.]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Analýza  a opis riešenia ==&lt;br /&gt;
&lt;br /&gt;
Realizácia sa dá rozdeliť na 3 časti: &lt;br /&gt;
                                      -Elektrická časť&lt;br /&gt;
                                      -Fyzická časť&lt;br /&gt;
                                      -Programové riešenie&lt;br /&gt;
&lt;br /&gt;
Elektrická časť zabezpečuje spája programovú a fyzickú časť. slúži na prenos a riadenie.  &lt;br /&gt;
&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181439.png|400px|thumb|center|Schéma zapojenia LCD displeja.]]&lt;br /&gt;
&lt;br /&gt;
Fyzická časť pozostáva z krabičky a taniera, Krabička bola vyrezaná laserom zo 4mm preglejky a tanier bol vytlačený na 3D tlačiarni.&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181810.png|400px|thumb|right|Celá Krabička.]]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 183225.png|400px|thumb|center|Model Taniera.]]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Snímka obrazovky 2023-06-23 181903.png|400px|thumb|left|Rozložená krabička.]]&lt;br /&gt;
&lt;br /&gt;
=== Algoritmus a program ===&lt;br /&gt;
Algoritmus programu vychádza z artuino countdown timera. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;AVR C-code&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;c++&amp;quot; style=&amp;quot;background: LightYellow;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal.h&amp;gt;&lt;br /&gt;
#include&amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Stepper.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;&lt;br /&gt;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);&lt;br /&gt;
const int stepsPerRevolution = 1027;&lt;br /&gt;
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);&lt;br /&gt;
const int kontakt=A5;&lt;br /&gt;
const int diode= 12;&lt;br /&gt;
const int stsp = A0;&lt;br /&gt;
const int inc = A1;&lt;br /&gt;
const int dec = A2;&lt;br /&gt;
const int set = A3;&lt;br /&gt;
const int relay = 8;&lt;br /&gt;
int hrs = 0;&lt;br /&gt;
int Min = 0;&lt;br /&gt;
int sec = 0;&lt;br /&gt;
unsigned int check_val = 50;&lt;br /&gt;
int add_chk = 0;&lt;br /&gt;
int add_hrs = 1;&lt;br /&gt;
int add_min = 2;&lt;br /&gt;
bool RUN = true;&lt;br /&gt;
bool min_flag = true;&lt;br /&gt;
bool hrs_flag = true;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  lcd.begin(16, 2);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;COUNTDOWN TIMER&amp;quot;);&lt;br /&gt;
  pinMode(stsp, INPUT_PULLUP);&lt;br /&gt;
  pinMode(kontakt, INPUT_PULLUP);&lt;br /&gt;
  pinMode(inc, INPUT_PULLUP);&lt;br /&gt;
  pinMode(dec, INPUT_PULLUP);&lt;br /&gt;
  pinMode(set, INPUT_PULLUP);&lt;br /&gt;
  pinMode(relay, OUTPUT);&lt;br /&gt;
  pinMode(diode,OUTPUT);&lt;br /&gt;
  digitalWrite(relay, LOW); &lt;br /&gt;
  digitalWrite(diode, LOW); &lt;br /&gt;
  if (EEPROM.read(add_chk) != check_val)&lt;br /&gt;
  {&lt;br /&gt;
    EEPROM.write(add_chk, check_val);&lt;br /&gt;
    EEPROM.write(add_hrs, 0);&lt;br /&gt;
    EEPROM.write(add_min, 1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    hrs = EEPROM.read(add_hrs);&lt;br /&gt;
    Min = EEPROM.read(add_min);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  myStepper.setSpeed(15);&lt;br /&gt;
  INIT();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(stsp) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.clear();&lt;br /&gt;
    delay(250);&lt;br /&gt;
    RUN = true;&lt;br /&gt;
    while (RUN)&lt;br /&gt;
    {&lt;br /&gt;
      if (digitalRead(stsp) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        delay(1000);&lt;br /&gt;
        if (digitalRead(stsp) == LOW)&lt;br /&gt;
        {&lt;br /&gt;
          digitalWrite(relay, LOW); &lt;br /&gt;
          digitalWrite(diode,LOW);&lt;br /&gt;
          lcd.clear();&lt;br /&gt;
          lcd.setCursor(0, 0);&lt;br /&gt;
          lcd.print(&amp;quot;  TIMER STOPPED&amp;quot;);&lt;br /&gt;
          lcd.setCursor(0, 1);&lt;br /&gt;
          lcd.print(&amp;quot;----------------&amp;quot;);&lt;br /&gt;
          delay(2000);&lt;br /&gt;
          RUN = false;&lt;br /&gt;
          INIT();&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(kontakt) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(diode, HIGH);&lt;br /&gt;
        myStepper.step(stepsPerRevolution/4);&lt;br /&gt;
        sec = sec - 1;&lt;br /&gt;
      }&lt;br /&gt;
      else{&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
      }&lt;br /&gt;
      digitalWrite(relay, HIGH); &lt;br /&gt;
      if (sec == -1)&lt;br /&gt;
      {&lt;br /&gt;
        sec = 59;&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (Min == -1)&lt;br /&gt;
      {&lt;br /&gt;
        Min = 59;&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (hrs == -1) hrs = 0;&lt;br /&gt;
      lcd.setCursor(0, 1);&lt;br /&gt;
      lcd.print(&amp;quot;****************&amp;quot;);&lt;br /&gt;
      lcd.setCursor(4, 0);&lt;br /&gt;
      if (hrs &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (Min &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      lcd.print(&#039;:&#039;);&lt;br /&gt;
      if (sec &amp;lt;= 9)&lt;br /&gt;
      {&lt;br /&gt;
        lcd.print(&#039;0&#039;);&lt;br /&gt;
      }&lt;br /&gt;
      lcd.print(sec);&lt;br /&gt;
      if (hrs == 0 &amp;amp;&amp;amp; Min == 0 &amp;amp;&amp;amp; sec == 0)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(relay, LOW); &lt;br /&gt;
        lcd.setCursor(4, 0);&lt;br /&gt;
        RUN = false;&lt;br /&gt;
        digitalWrite(diode, LOW);&lt;br /&gt;
        INIT();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(set) == LOW)&lt;br /&gt;
  {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    while (min_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET MINUTE: &amp;quot;);&lt;br /&gt;
      lcd.print(Min);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min + 1;&lt;br /&gt;
        if (Min &amp;gt;= 60) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        Min = Min - 1;&lt;br /&gt;
        if (Min &amp;lt;= -1) Min = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        min_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    while (hrs_flag)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;SET HOUR: &amp;quot;);&lt;br /&gt;
      lcd.print(hrs);&lt;br /&gt;
      delay(100);&lt;br /&gt;
      if (digitalRead(inc) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs + 1;&lt;br /&gt;
        if (hrs &amp;gt; 23) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(dec) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs = hrs - 1;&lt;br /&gt;
        if (hrs &amp;lt;= -1) hrs = 0;&lt;br /&gt;
        delay(100);&lt;br /&gt;
      }&lt;br /&gt;
      if (digitalRead(set) == LOW)&lt;br /&gt;
      {&lt;br /&gt;
        hrs_flag = false;&lt;br /&gt;
        delay(250);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (hrs == 0 &amp;amp;&amp;amp; Min == 0)&lt;br /&gt;
    {&lt;br /&gt;
      lcd.clear();&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;  INVAID TIME&amp;quot;);&lt;br /&gt;
      delay(2000);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      EEPROM.write(add_hrs, hrs);&lt;br /&gt;
      EEPROM.write(add_min, Min);&lt;br /&gt;
    }&lt;br /&gt;
    INIT();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void INIT()&lt;br /&gt;
{&lt;br /&gt;
  hrs = EEPROM.read(add_hrs);&lt;br /&gt;
  Min = EEPROM.read(add_min);&lt;br /&gt;
  sec = 0;&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;Start / Set Time&amp;quot;);&lt;br /&gt;
  lcd.setCursor(4, 1);&lt;br /&gt;
  if (hrs &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(hrs);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (Min &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(Min);&lt;br /&gt;
  lcd.print(&#039;:&#039;);&lt;br /&gt;
  if (sec &amp;lt;= 9)&lt;br /&gt;
  {&lt;br /&gt;
    lcd.print(&#039;0&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  lcd.print(sec);&lt;br /&gt;
  min_flag = true;&lt;br /&gt;
  hrs_flag = true;&lt;br /&gt;
  delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x &#039;&#039;zdrojaky.zip&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Overenie ===&lt;br /&gt;
&lt;br /&gt;
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. &lt;br /&gt;
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=ZnA87YROfug&lt;br /&gt;
&lt;br /&gt;
Kľúčové slová &#039;Category&#039;, ktoré sú na konci stránky nemeňte. &lt;br /&gt;
&lt;br /&gt;
[[Category:DTV]][[Category:DTV2023]]&lt;/div&gt;</summary>
		<author><name>StudentDTV</name></author>
	</entry>
</feed>