This is an old revision of the document!
2048 Deluxe
Contact: Login to see contact info.
Introducere
Proiectul constă în implementarea bine-cunoscutului joc 2048 pe un ecran monocrom Nokia 5110 84×48 pixeli, adăugând diverse elemente de quality of life precum:
Scopul acestui proiect este de a pune în practică toate noțiunile prezentate până acum în cadrul laboratoarelor de PM.
Descriere generală
La pornirea jocului se va alege între a începe un joc nou și între a vedea un top cu cele mai mari scoruri de până acum. Când jucătorul alege să pornească un joc nou, pe ecran va fi încărcată scena jocului în care va putea să își vadă scorul curent și va putea să miște elementele stânga/dreapta sau sus/jos folosind un modul joystick PS2. La sfârșitul jocului, în cazul în care a câștigat, jucătorul va putea să își salveze scorul dacă acesta se încadrează în top-ul vechi.
Utilizatorul va avea câteva butoane tactile dedicate pentru pause, quit, continue. Jocul conține, de asemenea, un led RGB decorativ care luminează în culori diferite în funcție de acțiunile utilizatorului, precum și un buzzer care să redea sunetele. Utilizatorul va putea seta luminozitatea ecranului, precum și volumul buzzerului folosind potențiometre.
Schema bloc:
Hardware Design
Denumire piesă | Preț piesă | Furnizor | Cantitate comandată |
Arduino Uno R3 | 25 lei | cleste.ro | 1 |
Modul joysticks PS2 | 8 lei | cleste.ro | 1 |
Ecran Nokia 5110 85×48 | 19 lei | cleste.ro | 1 |
Buton Tactil 6x6x5mm | 1 leu | cleste.ro | 5 |
LED de 5mm diverse culori | 0.3 lei | cleste.ro | 50 |
LED RGB 5mm 4 pini catod comun | 2 lei | cleste.ro | 5 |
Breadboard 830 puncte | 15 lei | cleste.ro | 1 |
Fire Dupont tata-tata | 4 lei | cleste.ro | 30 |
Fire Dupont mama-tata | 4 lei | cleste.ro | 30 |
Potentiometru liniar 10K | 3 lei | ardushop.ro | 2 |
Buzzer pasiv | 3 lei | ardushop.ro | 5 |
Rezistor 220R | 0.4 lei | ardushop.ro | 20 |
Rezistor 1.2K | 0.4 lei | ardushop.ro | 20 |
Cablu USB A-B | 4 lei | ardushop.ro | 1 |
Schema Electrică
Software Design
Mediul de dezvoltare folosit pe parcursul implementării a fost
Arduino IDE .
Biblioteci folosite în implementarea proiectului:
Detalii despre implementare
Funcții și variabile pe scurt
Variabile globale
Variabila cea mai importantă
Logica jocului
g_state, g_option
g_pause, g_record
Variabile ce reprezintă jocul propriu-zis
Variabilă auxiliară
Variabile orientate hardware
g_adc_val
g_last_debounce
Funcții folosite
Funcții specifice Arduino
ARDUINO_MyRead
ARDUINO_ChangePin
ARDUINO_WriteScore
Funcții specifice display-ului
Funcții pentru led/buzzer/butoane/joystick
LED_SetColorRGB
LED_SetColorHSV
BUZZER_PlaySound
ISR(PCINT0_vect)
ISR(PCINT2_vect)
ISR(ADC_vect)
Analiza programului
În funcția de setup se pregătește configurația inițială a jocului:
se pornesc ADC și întreruperea de ADC
se setează întreruperea după timer1 la valoarea din OCR1A, adică la fiecare 3 secunde
se creează două piese de 1024 pe tabla de joc pentru a putea analiza rapid toate funcțiile apelate în caz de victorie. Când jocul este resetat folosind funcția DISPLAY_ResetGame aceste două piese amplasate special nu se vor mai afla în tabla de joc.
se realizează inițializarea led-ului, a buzzerului, a celor 3 butoane, a joystick-ului și a display-ului
se activează întreruperile externe pentru PCINT-uri
se setează led-ul RGB pe alb și display-ul printează meniul principal apelând DISPLAY_PrintMenu
În funcția de loop se apelează doar DISPLAY_GameLogic care se va ocupa de toată logica jocului.
Rezultate Obţinute
TODO
Care au fost rezultatele obţinute în urma realizării proiectului vostru.
Concluzii
Download
TODO
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.
Jurnal
Bibliografie/Resurse
TODO
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.