Operácie

Holografické hodiny: Rozdiel medzi revíziami

Z SensorWiki

(Popis riešenia)
 
(11 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 17: Riadok 17:
 
*Arduino Uno  
 
*Arduino Uno  
 
*RTC
 
*RTC
'''Material'''
+
 
 +
'''Materiál'''
 
#28 x vygravirované plexisklo
 
#28 x vygravirované plexisklo
 +
#28 x LEDka
 
#Preglejková krabička
 
#Preglejková krabička
 
#Arduino Uno, RTC modul
 
#Arduino Uno, RTC modul
Riadok 32: Riadok 34:
 
* Zapojenie potrebnej elektroniky
 
* Zapojenie potrebnej elektroniky
 
* Naprogramovanie hodiniek
 
* Naprogramovanie hodiniek
* Osadenie naprogramovanej a zapojenej dosky do krabicky
+
* Osadenie naprogramovanej a zapojenej dosky do krabičky
  
  
  
[[Súbor:MojObrazok2.jpg|center|300px]]
+
__TOC__
  
[[Médiá:MojZdrojak.c]]
+
== Analýza ==
 +
Návrh plexiskiel bol zozačiatku obtiažny kedže sme chceli mat všetky čísla vygravirované a teda si navrhnúť rôzny štýl font-u. Kedže sme po čase zistili, že 7 segmentov bude najoptimálnejšie riešenie, kde by sme nemuseli vyrezávať cez 40 plexiskiel , navrhli sme teda ako by mali tieto jednotlivé segmenty vyzerať.
 +
[[Súbor:CisliceObr.jpg|center]]
 +
Aby sme mali kde osadiť naše plexiskla museli sme vymysliet  krabičku s výrezmi,v ktorých boli osadené plexiskla.Potom sme sa zamerali na zapojenie elektronických súčiastok a technológií, ktoré sme potrebovali k tomuto projektu.
 +
Najpodstatnejšou časťou však bolo vymyslieť(alebo nájsť :D ) kód, podľa ktorých hodinky budú vypisovať správny čas.
  
  
'''Použité zdroje:'''
 
  
* Zoznam použitej literatúry, vrátane katalógových údajov (datasheet), internetových odkazov a pod.
 
  
__TOC__
 
 
== Analýza ==
 
 
V tejto časti popíšete ako idete daný problém riešiť. Uvediete sem aj všetky potrebné technické údaje,
 
ktoré sú potrebné na úspešné vyriešenie projektu. Napríklad:
 
 
* popis komunikačnej zbernice (i2c, 1-wire, RS-232 a pod.)
 
* obrázok zapojenia vývodov použitej súčiastky
 
* odkaz na katalógový list
 
* priebehy dôležitých signálov
 
* este jedna polozka
 
  
  
 
== Popis riešenia ==
 
== Popis riešenia ==
 +
V prvom rade sme si potrebovali vyrezať krabičku a plexiskla .Krabičku sme zhotovili na základe širky medzier a plexiskiel.Šírku plexiskla sme nastavili na 3cm a výšku 10cm ,avšak museli sme rátať aj hĺbkou osadenia do krabičky čo vychádzalo na cca2-3cm.Medzi týmito výškami plexiskla 3-10 sme nakreslili jednotlivé segmenty.
 +
[[Súbor:Housing.jpg|center|550px]]
  
Sem opíšete ako konkrétne ste problém vyriešili. Začnite popisom pripojenia k procesoru
+
Po návrhu a vyrezaní skiel a krabičky sme sa pustili do zapojenia elektroniky.
(nezabudnite na schému zapojenia!) a zdôraznite ktoré jeho periférie ste pritom využili.  
+
Pri zapájaní elektroniky sme sa snažili pozápajať v prvom rade naše Arduino s Shiftout registrami
 +
[[Súbor:4.jpg|center|250px]]
 +
Kedže v elektronike sme nováčikovia , riadili sme sa schémami , ktoré sme našli pri podobných projektoch , v nasledújucom obrázku je detailnejšie popísané zapojenie Shiftout registrov s LED svietilami a Arduinom
 +
'''Schéma zapojennia '''
 +
[[Súbor:Shift.jpg|center|450px]]
 +
'''Diagram na podrobnejšiu schému zapojenia'''
 +
[[Súbor:diagram.jpg|center|350px]]
 +
  
 
'''Schéma zapojenia Arduina s RTC modulom'''
 
'''Schéma zapojenia Arduina s RTC modulom'''
[[Súbor:ArduinoRTC.png|center|300px]]
 
  
[[Súbor:Example.jpg]]
+
[[Súbor:Arduino.png|center|400px]]
 +
Tu sú schémy na vyrezávanie plexiskla aj krabičky:
 +
[[súbor:laser.zip]]
 +
 
 +
=== Algoritmus a program ===
 +
Výsledný program sme naprogramovali v C cez prostredie Arduino. V princípe sme si nasetovali čas , a potom následne cez RTC modul
 +
sme si vytiahli čas a "rozparsovali" sme si ho na hodiny a minuty.
  
Pozn.: Názov obrázku musí byť jedinečný, uvedomte si, že Obr1.jpg už pred vami skúsilo
+
Pred tým než sme napísali kód nižšie sme si však museli setnuť čas(koľko hodín bolo po zapojení RTC a skompilovaní programu )
nahrať už aspoň 10 študentov.
+
<source lang="c">
  
[[Súbor:MojObrazok.jpg|center|250px]]
+
void setup() {
 +
  Serial.begin(9600);
 +
  pinMode(latchPin, OUTPUT);
 +
  pinMode(clockPin, OUTPUT);
 +
  pinMode(dataPin, OUTPUT);
  
=== Algoritmus a program ===
+
  Wire.begin();
 +
  rtc.begin();
  
Uveďte stručný popis algoritmu, v akom jazyku a verzii vývojového prostredia ste ho vytvorili.  
+
rtc.setDOW(WEDNESDAY);    // Túto časť ani Dátum nepotrebujeme ale keď chceme tak možme pre lepši pocit
Je vhodné nakresliť aspoň hrubú štruktúru programu napríklad vo forme vývojového diagramu.  
+
rtc.setTime(23, 29, 0);    // Nasetovanie času
Rozsiahly program pre lepšiu prehľadnosť rozdeľte do viacerých súborov.
+
rtc.setDate(23, 5, 2018);  // Nasetovanie datumu kedy sme skompilovali a vložili algoritmus na dosku
 +
 
 +
 +
}
 +
</source>
  
Vyberte podstatné časti zdrojového kódu, použite na to prostredie ''source'':
+
V tomto programe možme vidieť algoritmus pomocou, ktorého sme si čas rozparsovali a rozsvietili LED diódy.
  
 
<source lang="c">
 
<source lang="c">
/* A nezabudnite zdroják hojne komentovať */
+
/* Na začiatku sme si museli includnuť knižnice , ktoré budeme potrebovať */
  
 
#include <Wire.h>
 
#include <Wire.h>
Riadok 91: Riadok 106:
 
RTC_DS1307 RTC;
 
RTC_DS1307 RTC;
  
const int dataPin = 11;  // arduino pin 12 to TPIC6B595 pin 3 serial in (SER IN)
+
const int dataPin = 11;  // zapojenie arduino pin 12 k Shiftout pin 3 serial in (SER IN)
const int latchPin = 8; // arduino pin 10 to TPIC6B595 pin 12 latch signal (RCK)
+
const int latchPin = 8; // zapojenie  arduino pin 10 k  Shiftout pin 12 latch signal (RCK)
const int clockPin = 12;  // arduino pin 9 to TPIC6B595 pin 13 clock (SRCK)
+
const int clockPin = 12;  // zapojenie  arduino pin 9 k Shiftout pin 13 clock (SRCK)
const int ldrIn = A0;    // arduino pin A0 to leg 1 of the LDR as well as leg 1 of a 10K resistor
+
 
                        // LDR leg 2 to GND and leg 2 of the 10K to 5V
 
  
 +
// pole čísel nám znázorňuje sučet čisiel, ktoré LEDKY sa nám rozsvietia aby vykreslili čislo
 
const int digits[10] = {63, 6, 91, 79, 102, 109, 125, 7, 127, 111};  
 
const int digits[10] = {63, 6, 91, 79, 102, 109, 125, 7, 127, 111};  
 +
void setup() {
 +
  Serial.begin(9600);
 +
 +
  //set pins to output so you can control the shift register
 +
  pinMode(latchPin, OUTPUT);
 +
  pinMode(clockPin, OUTPUT);[[Súbor:
 +
  pinMode(dataPin, OUTPUT);
 +
  Wire.begin();
 +
  RTC.begin();
 +
  if (! RTC.isrunning()) {
 +
    RTC.adjust(DateTime(__DATE__, __TIME__));
 +
  } // end if
 +
} // end void setup
 +
 +
 +
void loop() {
 +
  // RTC nám zistí  reálny čas odkedy sme ho setli
 +
  DateTime now = RTC.now();
 +
  int thehour = now.hour();
 +
 +
  int hour_tens = thehour / 10;
 +
  int hour_ones = thehour % 10;
 +
 +
  int minute_tens = now.minute() / 10;
 +
  int minute_ones = now.minute() % 10;
 +
 +
  //Vypis na overenie či nám ide správne čas
 +
  Serial.print(now.hour());
 +
  Serial.print(":");
 +
  Serial.print(now.minute());
 +
  Serial.print(":");
 +
  Serial.print("\n");
 +
  digitalWrite(latchPin, LOW);
 +
  shiftOut(dataPin, clockPin, MSBFIRST, digits[hour_tens]);
 +
  shiftOut(dataPin, clockPin, MSBFIRST, digits[hour_ones]);
 +
  shiftOut(dataPin, clockPin, MSBFIRST, digits[minute_tens]);
 +
  shiftOut(dataPin, clockPin, MSBFIRST, digits[minute_ones]);
 +
 +
 +
  //rozsvietenie LED
 +
  digitalWrite(latchPin, HIGH);
 
}
 
}
 
</source>
 
</source>
  
Nezabudnite však nahrať aj kompletné zdrojové kódy vášho programu!
+
V tomto odkaze je kompletný zdrojový kód programu avšak bez prvej časti.Tá sa robi samostatne.
 +
 
 +
Zdrojový kód: [[Médiá:Zdrojovysubor.c|main.c]]
  
Zdrojový kód: [[Médiá:Serial.h|serial.h]] a [[Médiá:Pip.c|main.c]]
 
  
[[Médiá:MojProgram.c|program.c]]
 
  
  
 
=== Výsledok ===
 
=== Výsledok ===
  
Nezabudnite zdokumentovať výsledok vašej práce. Určite sem patria fotografie, video
+
Výsledok našej práce sa takmer podaril až na zle vyriešenie problému s osvetlením plexiskiel.Tento problem by sme  mohli vyriesit možno inou farbou LED diód alebo iným gravírom(verím, že problém je v gravíre alebo návrhu plexiskla, kedže sme využili vysokosvietivé diódy).Nešťastím tohto projektu mohlo byť však aj osadenie LED diód alebo nedostatok diód osviecujúcich plexisklo.
a zhodnotenie ako ste spokojní s výsledkom,  
+
[[Súbor:VysledokClock.jpg|center|400px]]
 
 
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.
 
  
 +
'''Použité zdroje:'''
 +
[https://www.electronicshub.org/arduino-real-time-clock-tutorial/] Real-Time tutoriál
 +
[http://forum.arduino.cc/index.php?topic=317425.0] Rozsvietenie LED  a parsovanie času
  
 
[[Category:DTV2018]]
 
[[Category:DTV2018]]

Aktuálna revízia z 14:24, 27. máj 2018

Autori: Adriána Selepová, Oliver Lachkovič
Študijný odbor: Aplikovaná informatika 3. Bc. (2018)

Opis projektu

Cieľom tohto projektu bolo vytvoriť tzv. Holografické hodiny.

Prečo?

  1. Tento projekt nás zaujal na základe digitrónov alebo inač nazývaných číslicových výbojek.Kdedže digitróny sú elektronické súčiastky ,plynom plnené výbojky so studenou katódou, bolo by to pre nás veľmi obtiažne niečo také vyrobiť, našli sme alternatívu ako niečo také napodobniť.

Využité technológie

  • Laserový vyrezávač
  • Arduino Uno
  • RTC

Materiál

  1. 28 x vygravirované plexisklo
  2. 28 x LEDka
  3. Preglejková krabička
  4. Arduino Uno, RTC modul
  5. BreadBoard,prepojovacie káble
  6. 4 x ShiftOut registre

Návod

V návode v krátkosti popisané základné kroky prípravy a zhotovenia produktu:

  • Návrh 7 segmentových plexisiek
  • Návrh krabičiek
  • Vyrezanie potrebných materiálov : 28 plexiskiel vygravírovaných podľa 7 segmentov na displeji, drevená krabička na osadenie čísel
  • Zapojenie potrebnej elektroniky
  • Naprogramovanie hodiniek
  • Osadenie naprogramovanej a zapojenej dosky do krabičky


Analýza

Návrh plexiskiel bol zozačiatku obtiažny kedže sme chceli mat všetky čísla vygravirované a teda si navrhnúť rôzny štýl font-u. Kedže sme po čase zistili, že 7 segmentov bude najoptimálnejšie riešenie, kde by sme nemuseli vyrezávať cez 40 plexiskiel , navrhli sme teda ako by mali tieto jednotlivé segmenty vyzerať.

CisliceObr.jpg

Aby sme mali kde osadiť naše plexiskla museli sme vymysliet krabičku s výrezmi,v ktorých boli osadené plexiskla.Potom sme sa zamerali na zapojenie elektronických súčiastok a technológií, ktoré sme potrebovali k tomuto projektu. Najpodstatnejšou časťou však bolo vymyslieť(alebo nájsť :D ) kód, podľa ktorých hodinky budú vypisovať správny čas.




Popis riešenia

V prvom rade sme si potrebovali vyrezať krabičku a plexiskla .Krabičku sme zhotovili na základe širky medzier a plexiskiel.Šírku plexiskla sme nastavili na 3cm a výšku 10cm ,avšak museli sme rátať aj hĺbkou osadenia do krabičky čo vychádzalo na cca2-3cm.Medzi týmito výškami plexiskla 3-10 sme nakreslili jednotlivé segmenty.

Housing.jpg

Po návrhu a vyrezaní skiel a krabičky sme sa pustili do zapojenia elektroniky. Pri zapájaní elektroniky sme sa snažili pozápajať v prvom rade naše Arduino s Shiftout registrami

4.jpg

Kedže v elektronike sme nováčikovia , riadili sme sa schémami , ktoré sme našli pri podobných projektoch , v nasledújucom obrázku je detailnejšie popísané zapojenie Shiftout registrov s LED svietilami a Arduinom Schéma zapojennia

Shift.jpg

Diagram na podrobnejšiu schému zapojenia

Diagram.jpg


Schéma zapojenia Arduina s RTC modulom

Arduino.png

Tu sú schémy na vyrezávanie plexiskla aj krabičky: Súbor:Laser.zip

Algoritmus a program

Výsledný program sme naprogramovali v C cez prostredie Arduino. V princípe sme si nasetovali čas , a potom následne cez RTC modul sme si vytiahli čas a "rozparsovali" sme si ho na hodiny a minuty.

Pred tým než sme napísali kód nižšie sme si však museli setnuť čas(koľko hodín bolo po zapojení RTC a skompilovaní programu )

void setup() {
  Serial.begin(9600);
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);

  Wire.begin();
  rtc.begin();

 rtc.setDOW(WEDNESDAY);     // Túto časť ani Dátum nepotrebujeme ale keď chceme tak možme pre lepši pocit
 rtc.setTime(23, 29, 0);     // Nasetovanie času 
 rtc.setDate(23, 5, 2018);   // Nasetovanie datumu kedy sme skompilovali a vložili algoritmus na dosku
  
 
}

V tomto programe možme vidieť algoritmus pomocou, ktorého sme si čas rozparsovali a rozsvietili LED diódy.

/* Na začiatku sme si museli  includnuť knižnice , ktoré budeme potrebovať */

#include <Wire.h>
#include <RTClib.h>


RTC_DS1307 RTC;

const int dataPin = 11;  // zapojenie arduino pin 12 k Shiftout pin 3 serial in (SER IN)
const int latchPin = 8; // zapojenie  arduino pin 10 k  Shiftout pin 12 latch signal (RCK)
const int clockPin = 12;  // zapojenie  arduino pin 9 k Shiftout pin 13 clock (SRCK)


// pole čísel nám znázorňuje sučet čisiel, ktoré LEDKY sa nám rozsvietia aby vykreslili čislo
const int digits[10] = {63, 6, 91, 79, 102, 109, 125, 7, 127, 111}; 
void setup() {
  Serial.begin(9600);

  //set pins to output so you can control the shift register
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);[[Súbor:
  pinMode(dataPin, OUTPUT);
  Wire.begin();
  RTC.begin();
  if (! RTC.isrunning()) {
    RTC.adjust(DateTime(__DATE__, __TIME__));
  } // end if
} // end void setup


void loop() {
   // RTC nám zistí  reálny čas odkedy sme ho setli
  DateTime now = RTC.now();
  int thehour = now.hour();

  int hour_tens = thehour / 10;
  int hour_ones = thehour % 10;

  int minute_tens = now.minute() / 10;
  int minute_ones = now.minute() % 10;

  //Vypis na overenie či nám ide správne čas
  Serial.print(now.hour());
  Serial.print(":");
  Serial.print(now.minute());
  Serial.print(":");
  Serial.print("\n");
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, digits[hour_tens]);
  shiftOut(dataPin, clockPin, MSBFIRST, digits[hour_ones]);
  shiftOut(dataPin, clockPin, MSBFIRST, digits[minute_tens]);
  shiftOut(dataPin, clockPin, MSBFIRST, digits[minute_ones]);


  //rozsvietenie LED
  digitalWrite(latchPin, HIGH);
}

V tomto odkaze je kompletný zdrojový kód programu avšak bez prvej časti.Tá sa robi samostatne.

Zdrojový kód: main.c



Výsledok

Výsledok našej práce sa takmer podaril až na zle vyriešenie problému s osvetlením plexiskiel.Tento problem by sme mohli vyriesit možno inou farbou LED diód alebo iným gravírom(verím, že problém je v gravíre alebo návrhu plexiskla, kedže sme využili vysokosvietivé diódy).Nešťastím tohto projektu mohlo byť však aj osadenie LED diód alebo nedostatok diód osviecujúcich plexisklo.

VysledokClock.jpg

Použité zdroje: [1] Real-Time tutoriál [2] Rozsvietenie LED a parsovanie času