Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:rpascale:darius.calota [2024/05/15 02:21]
darius.calota [Introducere]
pm:prj2024:rpascale:darius.calota [2024/05/21 23:33] (current)
darius.calota [Software Design]
Line 5: Line 5:
 ===== Descriere generală ===== ===== Descriere generală =====
  
-<note tip> +  * Jocul va începe odată ce apeșbutonul.  
-O schemă bloc cu toate modulele proiectului vostru, atât software cât şhardware însoţită de o descriere a acestora precum şi a modului ​în care interacţionează.+ 
 +  * Scopul tău este să protejezi persoana ​de blocurile care lovesc.  
 + 
 +  * Scorul va fi afișat ​în partea dreaptă sus. 
 + 
 +Astfel, utilizatorul va apasa butonul ori de câte ori doreste ca personajul sa efectueze o saritura. Saritura se realizeaza in momentul intalnirii unui obstacol, inainte de potentialul contact cu acesta. 
 + 
 +{{:​pm:​prj2024:​rpascale:​initial_diagram.png?​800|}} 
  
-Exemplu de schemă bloc: http://​www.robs-projects.com/​mp3proj/​newplayer.html 
-</​note>​ 
  
 ===== Hardware Design ===== ===== Hardware Design =====
 +Listă de piese:
 +  * Arduino UNO
 +  * Fire de lagatura
 +  * Breadboard
 +  * Switch
 +  * LCD 1602
 +  * Cablu USB pentru alimentarea UNO
 +
 +Schema electrică:
 +
 +{{:​pm:​prj2024:​rpascale:​schema.png?​700|700}}
 +
 +Pini utilizați:
 +Arduino Uno:
 +  * GND (GND.1): Conectat la pinul VSS al LCD-ului pentru a furniza legătură la masă (GND).
 +  * 5V: Conectat la pinul VDD al LCD-ului pentru a furniza alimentare la 5V.
 +  * Pin 9 (E): Conectat la pinul E (Enable) al LCD-ului pentru controlul modului de execuție.
 +  * Pin 10 (RW): Conectat la pinul RW (Read/​Write) al LCD-ului pentru controlul direcției de scriere.
 +  * Pin 11 (RS): Conectat la pinul RS (Register Select) al LCD-ului pentru a selecta între date și instrucțiuni.
 +  * Pin 12 (V0): Conectat la pinul V0 al LCD-ului pentru a controla contrastul afișajului.
 +  * Pin 6 (D4): Conectat la pinul D4 al LCD-ului pentru comunicația în modul 4-bit.
 +  * Pin 5 (D5): Conectat la pinul D5 al LCD-ului pentru comunicația în modul 4-bit.
 +  * Pin 4 (D6): Conectat la pinul D6 al LCD-ului pentru comunicația în modul 4-bit.
 +  * Pin 3 (D7): Conectat la pinul D7 al LCD-ului pentru comunicația în modul 4-bit.
 +  * Pin 2: Conectat la butonul pushbutton pentru a detecta apăsarea butonului.
 +
 +LCD 1602:
 +  * VSS: Conectat la GND al Arduino Uno pentru a furniza legătură la masă (GND).
 +  * VDD: Conectat la 5V al Arduino Uno pentru a furniza alimentare la 5V.
 +  * E (Enable): Conectat la pinul 9 al Arduino Uno pentru controlul modului de execuție.
 +  * RW (Read/​Write):​ Conectat la pinul 10 al Arduino Uno pentru controlul direcției de scriere.
 +  * RS (Register Select): Conectat la pinul 11 al Arduino Uno pentru a selecta între date și instrucțiuni.
 +  * V0: Conectat la pinul 12 al Arduino Uno pentru a controla contrastul afișajului.
 +  * D4, D5, D6, D7: Conectate la pinii 6, 5, 4 și 3 ai Arduino Uno pentru comunicația în modul 4-bit.
 +
 +Buton:
 +  * 1.l: Conectat la pinul 2 al Arduino Uno pentru a detecta apăsarea butonului.
 +  * 2.l: Conectat la GND al Arduino Uno pentru a furniza legătură la masă (GND).
 +
  
-<note tip> 
-Aici puneţi tot ce ţine de hardware design: 
-  * listă de piese 
-  * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri,​ e.g. http://​www.captain.at/​electronic-atmega16-mmc-schematic.png) 
-  * diagrame de semnal ​ 
-  * rezultatele simulării 
-</​note>​ 
  
 ===== Software Design ===== ===== Software Design =====
 +Mediu de Dezvoltare:
 +Codul aplicației este dezvoltat folosind Arduino IDE.
 +
 +Librării și Surse 3rd-Party:
 +Codul utilizează biblioteca standard LiquidCrystal.h,​ care facilitează interacțiunea cu afișajele LCD bazate pe controlere HD44780. Aceasta permite controlul ecranului pentru a afișa caractere și grafică personalizată.
 +
 +Algoritmi și Structuri Implementate:​
 +Aplicația implementează un joc simplu de tip runner, unde jucătorul controlează un erou ce se deplasează printr-un teren care se derulează continuu de la dreapta la stânga. Principalele componente ale algoritmului includ:
 +  * Inițializarea Graficii: Funcția initializeGraphics() definește și încarcă caractere personalizate pentru afișajul LCD, utilizând funcția lcd.createChar() pentru a crea sprite-uri pentru erou și teren.
 +  * Avansarea Terenului: Funcția advanceTerrain() deplasează terenul cu o unitate spre stânga, ajustând caracterele pentru a simula mișcarea continuă a terenului.
 +  * Desenarea Eroului: Funcția drawHero() gestionează afișarea eroului în diferite poziții (alergare, săritură) și detectează coliziunile cu terenul.
 +  * Gestionarea Interacțiunilor:​ Funcția buttonPush() tratează apăsările de buton folosind întreruperi hardware pentru a declanșa salturi ale eroului. În funcția loop(), starea jocului este actualizată continuu, avansând terenul, schimbând poziția eroului și verificând coliziunile. Jocul reîncepe atunci când este detectată o coliziune.
 +  * Controlul Jocului: Folosind variabile statice pentru a menține starea jocului între iterațiile buclei principale, jocul este controlat printr-o serie de stări și tranziții care determină acțiunile eroului și actualizarea ecranului.
 +
 +Surse și Funcții Implementate:​
 +  * initializeGraphics():​ Definește caracterele personalizate pentru erou și teren și inițializează matricele de teren.
 +  * advanceTerrain(char terrain, byte newTerrain) : Actualizează matricele de teren prin deplasarea conținutului spre stânga și adăugarea de noi elemente la capătul din dreapta.
 +  * drawHero(byte position, char terrainUpper,​ char terrainLower,​ unsigned int score): Desenează eroul în poziția sa actuală și verifică coliziunile cu terenul. Afișează și scorul curent pe ecranul LCD.
 +  * buttonPush():​ Setează un flag atunci când butonul este apăsat, utilizat pentru a declanșa saltul eroului.
 +  * setup(): Configurarea inițială a pinilor, afișajului LCD și întreruperilor hardware.
 +  * loop(): Buclează continuu pentru a actualiza starea jocului, incluzând avansarea terenului, gestionarea poziției eroului și verificarea coliziunilor. De asemenea, gestionează starea de așteptare înainte de începerea unui nou joc.
 + 
  
  
-<note tip> 
-Descrierea codului aplicaţiei (firmware): 
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) 
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi 
-  * (etapa 3) surse şi funcţii implementate 
-</​note>​ 
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
pm/prj2024/rpascale/darius.calota.1715728864.txt.gz · Last modified: 2024/05/15 02:21 by darius.calota
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