This shows you the differences between two versions of the page.
pm:prj2025:rnedelcu:ioana.ionescu2209 [2025/05/28 01:58] ioana.ionescu2209 [Hardware Design] |
pm:prj2025:rnedelcu:ioana.ionescu2209 [2025/05/28 03:26] (current) ioana.ionescu2209 |
||
---|---|---|---|
Line 122: | Line 122: | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | //Mediu de Dezvolate:// **Arduino IDE** | + | //Mediu de Dezvoltare:// **Arduino IDE** |
//Biblioteci:// | //Biblioteci:// | ||
- | * **Adafruit_ST7735** - control specififc cu ecranul | + | * **Adafruit_ST7735** - control specific cu ecranul |
- | * **Adafruit_GFX** - elemenete grafice generale | + | * **Adafruit_GFX** - elemente grafice generale |
- | * **SPI** - intercatiunea cu ecranul LCD | + | * **SPI** - interacțiunea cu ecranul LCD |
//Descriere cod:// | //Descriere cod:// | ||
- | ds | + | Am definit pinii pentru butoane, ecran și culorile LED-ului. |
- | ===== Rezultate Obţinute ===== | + | |
- | <note tip> | + | Am inițializat o variabilă booleană (isGame) care reține dacă te afli în jocul "Piatra, hârtie, foarfecă". |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
- | ===== Concluzii ===== | + | În funcția **setup()** am inițializat generatorul de numere aleatoare, afișajul ecranului și am rotit ecranul cu 90 de grade pentru a 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. |
- | Un proiect frumos și interesant de realizat. Datorită lui, mi-aș dori să mai realizez astfel de proiecte folosind microprocesoare. | + | Î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. |
- | ===== Download ===== | + | 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-ului, aprindeCuloare(int culoare) setează pe 50 culoarea corespunzătoare, asteaptaCuloareUtilizator() care, în funcție de ce buton apăsăm, se aprinde culoarea corespunzătoare și 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. |
- | <note warning> | + | 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ța, cresc nivelul și o iau de la capăt. |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi 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 Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | Î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. |
- | </note> | + | |
+ | 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> | ||