Differences

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

Link to this comparison view

pm:prj2025:rnedelcu:ioana.ionescu2209 [2025/05/28 00:26]
ioana.ionescu2209
pm:prj2025:rnedelcu:ioana.ionescu2209 [2025/05/28 03:26] (current)
ioana.ionescu2209
Line 46: Line 46:
  
 ===== Hardware Design ===== ===== Hardware Design =====
- 
  
 **Listă de componente principale:​** **Listă de componente principale:​**
Line 58: Line 57:
 - Ecran LCD - Ecran LCD
  
-- Rezistențe pentru LED (1x 330 si 2x 150)+- Rezistențe pentru LED (1x 330 Ω și 2x 150 Ω)
  
 - 2x Breadboard - 2x Breadboard
  
-fire tata-tata+Fire tată-tată
  
-fire U-shape+Fire U-shape
  
 **Schema circuit** **Schema circuit**
Line 74: Line 73:
 {{:​pm:​prj2025:​rnedelcu:​schema_electrica_ii.png?​300|}} {{:​pm:​prj2025:​rnedelcu:​schema_electrica_ii.png?​300|}}
  
-**Pini ​folositi**+**Pini ​folosiți**
  
-Arduino are pini pentru power, analogici ​si digitali. Am folosit pinii de power si pinii digitali.+Arduino are pini pentru ​alimentare (power)pini analogici ​și digitali. Am folosit pinii de alimentare și pinii digitali.
  
-La pinii de power am folosit pinul de 5V pentru a alimenta circuitul ​si pe cel de GND pentru a pune groundul circitului.+La pinii de alimentare ​am folositpinul de 5V pentru a alimenta circuitul, pinul de GND pentru a conecta masa circuitului.
  
-La pinii digitali am folosit pinii de la D2 pana la D13 astfel:+La pinii digitali am folosit pinii de la D2 până ​la D13astfel:
  
-- **D2** ​-> buton rosu+- **D2** ​→ Buton roșu
  
-- **D3** ​-> culoarea albastru ​ledului+- **D3** ​→ Culoarea albastră ​LED-ului
  
-- **D4** ​-> buton 1+- **D4** ​→ Buton 1
  
-- **D5** ​-> culoarea ​verde a ledului+- **D5** ​→ Culoarea ​verde a LED-ului
  
-- **D6** ​-> culoarea rosie ledului+- **D6** ​→ Culoarea roșie ​LED-ului
  
-- **D7** ​-> buton 2+- **D7** ​→ Buton 2
  
-- **D8** ​-> pinul RESET al ecranului+- **D8** ​→ Pinul RESET al ecranului
  
-- **D9** ​-> pinul DC al ecranului+- **D9** ​→ Pinul DC al ecranului
  
-- **D10** ​-> pinul CS al ecranului+- **D10** ​→ Pinul CS al ecranului
  
-- **D11** ​-> pinul SDA al ecranului+- **D11** ​→ Pinul SDA al ecranului
  
-- **D12** ​-> buton 3+- **D12** ​→ Buton 3
  
-- **D13** ​-> pinul SCK al ecranului+- **D13** ​→ Pinul SCK al ecranului
  
 +Am ales acești pini pentru culorile LED-ului deoarece permit utilizarea semnalului PWM.
  
-Pentru ecranul LCD au mai ramas 3 pini pe langa cei legati de Arduino:+Pentru ecranul LCD au mai rămas ​3 pinipe lângă ​cei conectați la Arduino:
  
-- **VCC** ​-> am pus la ++- **VCC** ​→ conectat ​la +
  
-- **LED** ​-> am pus la ++- **LED** ​→ conectat ​la +
  
-- **GND** ​-> am pus la -+- **GND** ​→ conectat ​la -
  
-mentionand faptul ca + a fost alimentat cu 5V de la microcontroler ​si are groundul tot de la microcontroler pus.+a fost alimentat cu 5V de la microcontroler, iar – este legat la GND-ul microcontrolerului.
  
-**Poza circuit**+**Poză circuit**
  
 {{:​pm:​prj2025:​rnedelcu:​poza_circuit_ii.jpeg?​300|}} {{:​pm:​prj2025:​rnedelcu:​poza_circuit_ii.jpeg?​300|}}
 ===== Software Design ===== ===== Software Design =====
  
 +//Mediu de Dezvoltare://​ **Arduino IDE**
  
-<note tip> +//​Biblioteci:// 
-Descrierea codului aplicaţiei (firmware)+  * **Adafruit_ST7735** ​control specific cu ecranul 
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +  * **Adafruit_GFX** - elemente grafice generale 
-  ​librării şi surse 3rd-party (e.g. Procyon AVRlib) +  * **SPI** - interacțiunea cu ecranul LCD
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+//Descriere cod://
  
-<note tip> +Am definit pinii pentru butoane, ecran și culorile LED-ului.
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
-===== Concluzii =====+Am inițializat o variabilă booleană (isGame) care reține dacă te afli în jocul "​Piatra,​ hârtie, foarfecă"​.
  
-Un proiect frumos ​și interesant ​de realizat. Datorită lui, mi-aș dori să mai realizez astfel ​de proiecte folosind microprocesoare.+În funcția **setup()** am inițializat generatorul de numere aleatoare, afișajul ecranului ​și am rotit ecranul cu 90 de grade pentru ​se potrivi cu poziționarea lui pe breadboard. Am inițializat pinii pentru butoane ca fiind pini de intrare. Am inițializat ​și pinii pentru culorile LED-ului ca fiind pini de output și am apelat funcția care stinge LED-ul.
  
-===== Download =====+În funcția **loop()** am verificat starea variabilei isGame. Dacă nu mă aflam în joc, se afișa mesajul de pe meniul principal și verificam ce buton apăsam. Dacă apăsam un buton corespunzător celorlalte 2 jocuri, se apela funcția corespunzătoare jocului. Dacă apelam butonul cu "​Piatra,​ hârtie, foarfecă",​ schimbam valoarea variabilei, afișam mesajul din pagina de instrucțiuni și după se apela funcția jocului.
  
-<note warning>​ +Am avut și niște **funcții auxiliare**:​ afiseazaMesaj(const char* mesaj) care afișează pe ecran din stânga sus mesajul dat, afiseazaMesajMijloc(const char* mesaj) afișează pe mijlocul ecranului mesajul, stingeLED(setează pe 0 culorile LED-uluiaprindeCuloare(int culoare) setează pe 50 culoarea corespunzătoareasteaptaCuloareUtilizator() careîn funcție ​de ce buton apăsăm, se aprinde culoarea corespunzătoare șse returnează valoarea pentru a fi verificată cu secvența, drawPixel(int x, int y, uint16_t color) colorează pixelul de la poziția x, y pentru jocul Snake, generateFood(generează aleator poziția mâncării pentru jocul Snake.
-O arhivă (sau mai multe dacă este cazulcu fişierele obţinute în urma realizării proiectului:​ surseschemeetc. Un fişier README, un ChangeLogun script ​de compilare şcopiere automată pe uC crează întotdeauna o impresie bună ;-).+
  
-Fişierele se încarcă pe wiki folosind facilitatea ​**Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +Pentru ​**jocul de memorie**, înainte de funcție am definit lungimea maximă a unei secvențe, un vector care reține secvența și nivelul curentÎn funcție am afișat mesajele de instrucțiuni și, într-un while(true),​ am verificat dacă am apăsat butonul ​de întoarcere la meniu, am creat secvența cu culori random, am aprins culorile, de menționat ​că în timp ce afișez secvența mă pot întoarce în meniul principal, după am verificat ​dacă culorile introduse de jucător sunt la fel cu secvențacresc nivelul și o iau de la capăt.
-</​note>​+
  
 +În funcția **jocPiatraHartieFoarfeca()** am văzut ce a ales jucătorul, reținând într-o variabilă alegerea, am afișat mesajul cu alegerea jucătorului,​ am făcut și alegerea calculatorului random și am afișat mesajul. Am verificat cele două variabile în ce caz se află și am afișat un mesaj corespunzător.
 +
 +Pentru **Snake**, am definit înainte de funcție o lungime maximă a șarpelui, o structură de tip point, am definit șarpele ca fiind un vector de puncte, lungimea inițială a șarpelui, am definit și mâncarea ca un punct, direcția șarpelui și scorul. În funcție am afișat instrucțiunile,​ am generat poziția de start a șarpelui și am generat mâncarea. Apoi, într-un while(true),​ am citit direcția dată de la butoane, am blocat întoarcerea directă în sens opus, am mutat tot corpul șarpelui, am verificat coliziunile cu marginea ecranului sau cu propriul corp, verific dacă șarpele a mâncat mâncarea și desenez totul pe ecran.
 +
 +===== Concluzii =====
 +
 +Un proiect frumos și interesant de realizat. Datorită lui, mi-aș dori să mai realizez astfel de proiecte folosind microprocesoare.
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2025/rnedelcu/ioana.ionescu2209.1748381177.txt.gz · Last modified: 2025/05/28 00:26 by ioana.ionescu2209
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