This is an old revision of the document!


Autor: Anghel Bogdan Gabriel
Grupa: 333CC

Introducere

Un display persistence of vision ce prezinta un ceas caruia i se poate seta o alarma.

Descriere generala

Se conecteaza un board cu 8/16 LEDuri la un Arduino UNO alaturi de un senzor. Prin rotirea suportului pe care sunt montate ledurile cu ajutorul motorului DC, se va obtine obtine un text reprezentand ora curenta care va parea persistent ochiului uman. Acesta va avea un buzzer conectat care va suna o alarma cand se ajunge la o ora prestabilita.

Schema Bloc

Hardware Design

Lista de Piese

  • ARDUINO UNO
  • 8/16 LEDuri
  • Motor
  • Baterii 9V
  • Suport
  • Placa PCB
  • Rezistente
  • Fire
  • Switch
  • Buzzer
  • Senzor IR

Asamblare

  1. am pus 8 leduri pe pcb, am legat catodul in comun si l-am conectat la GND, iar la anod cate o rezistenta;
  2. am lipit pinii de placuta utilizand un pistol de lipit;
  3. am lipit jumper cables M/M de rezistente si conectat la placuta Arduino la pinii 2-9;
  4. am conectat senzorul IR la placuta la pinii 10-11;
  5. am conectat o baterie 9V la o mufa de alimentare pentru a o putea conecta la placuta Arduino;
  6. am montat pe o placa de gips-carton subtire (spoiler: o sa fie prea grea) componentele mentionate anterior si le-am lipit cu silicon;
  7. am atasat un motor pe un suport de metal pentru a invarti placa;

Software Design

Codul a fost scris in Arduino IDE. M-am inspirat din versiuni gasite pe internet, modificand pentru a se potrivi porturile, senzorul, sincronizarea, caracterele. Am mapat caracterele, fiecare avand o secventa de 5 faze:

int NUMBER9[]={1,1,1,1,0,0,0,1, 1,0,0,1,0,0,0,1, 1,0,0,1,0,0,0,1, 1,0,0,1,0,0,0,1, 1,1,1,1,1,1,1,1};
int NUMBER8[]={0,1,1,0,1,1,1,0, 1,0,0,1,0,0,0,1, 1,0,0,1,0,0,0,1, 1,0,0,1,0,0,0,1, 0,1,1,0,1,1,1,0};
int NUMBER7[]={1,0,0,0,0,0,0,0, 1,0,0,0,1,0,0,0, 1,0,0,0,1,0,0,0, 1,0,0,1,1,1,1,1, 1,1,1,0,1,0,0,0};
int NUMBER6[]={1,1,1,1,1,1,1,1, 1,0,0,0,1,0,0,1, 1,0,0,0,1,0,0,1, 1,0,0,0,1,0,0,1, 1,0,0,0,1,1,1,1};
int NUMBER5[]={1,1,1,1,1,0,0,1, 1,0,0,0,1,0,0,1, 1,0,0,0,1,0,0,1, 1,0,0,0,1,0,0,1, 1,0,0,0,1,1,1,1};
. . .
. . .

Functia printLetter afiseaza litera curenta cu ajutorul ledurilor

 void printLetter(int letter[])
 {
           int y;
          
           for (y=0; y<8; y++)
           {
           digitalWrite(y+2, letter[y]);
           }
           delay(delayTime);
          
           for (y=0; y<8; y++)
           {
           digitalWrite(y+2, letter[y+8]);
           }
           delay(delayTime);
         
           for (y=0; y<8; y++)
           {
           digitalWrite(y+2, letter[y+16]);
           }
           delay(delayTime);
           for(y = 0; y<8; y++) {
           digitalWrite(y+2, letter[y+24]);
           }
           delay(delayTime);
          for(y = 0; y<8; y++) {
           digitalWrite(y+2, letter[y+32]);
           }
           delay(delayTime);
         
           for (y=0; y<8; y++)
           {
           digitalWrite(y+2, 0);
           }
           delay(letterSpace);

Rezultate Obtinute

Acesta este aspectul final al proiectului. Din pacate nu functioneaza efectiv, intrucat motorul este prea slab pentru a putea invarti suportul suficient de repede. Voi incerca sa inlocuiesc fie suportul fie motorul pentru a-l face functional.

Datorita lipsei unui modul RTC, nu am putut realiza functionalitatea initial dorita, aceea de a avea un ceas POV cu alarma.

Demo proiect

Concluzii

Download

Jurnal

Bibliografie/Resurse

pm/prj2021/avaduva/pov_alarma.1622588659.txt.gz · Last modified: 2021/06/02 02:04 by bogdan.anghel2010
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0