This shows you the differences between two versions of the page.
|
pm:prj2022:agmocanu:fastestbutton [2022/05/25 23:22] florin.oprisan [Hardware Design] |
pm:prj2022:agmocanu:fastestbutton [2022/06/01 17:39] (current) florin.oprisan [Concluzii] |
||
|---|---|---|---|
| Line 25: | Line 25: | ||
| * OLED Display | * OLED Display | ||
| * Breadboard | * Breadboard | ||
| + | |||
| + | |||
| + | |||
| + | |||
| Line 32: | Line 36: | ||
| {{pm:prj2022:agmocanu:arduinouno_oprisan.jpg?400|}} | {{pm:prj2022:agmocanu:arduinouno_oprisan.jpg?400|}} | ||
| + | |||
| + | {{:pm:prj2022:agmocanu:frits_electrical_oprisan.png?400|}} | ||
| + | |||
| + | |||
| + | {{:pm:prj2022:agmocanu:schema_electrica.jpg?500|}} | ||
| + | |||
| + | |||
| Line 37: | Line 48: | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| + | https://github.com/Tsunami36/Ma-Project2022/blob/main/Main | ||
| + | Am scris codul in mediul de dezvoltare: Arduino IDE. Am folosit urmatoarele biblioteci: | ||
| + | |||
| + | Adafruit_GFX - implementarea functiilor de afisare pe ecran | ||
| + | |||
| + | Adafruit_SSD1306.h - comunicarea intre arduino si ecran | ||
| + | |||
| + | SPI - comunicarea prin SPI | ||
| + | Wire | ||
| + | Ca variabile globale am: | ||
| + | SCREEN_WIDTH 128 | ||
| + | SCREEN_HEIGHT 64 | ||
| + | |||
| + | randomNumber1 -numarul ledurilor care se va aprinde | ||
| + | randomNumber2 -tipul pana cand se vor aprinde ledurile | ||
| + | |||
| + | |||
| + | pushes_p1,pushes_p2-nr de apasari al fiecare jucator | ||
| + | |||
| + | |||
| + | running - variabila booleana care spune daca jocul ruleaza la momentul curent de timp | ||
| + | |||
| + | Functiile implementate sunt: | ||
| + | |||
| + | setup() - initializarea pinilor si a ecranului | ||
| + | |||
| + | loop() -se aprind un random numar de leduri(1-3) dupa un interval random de timp | ||
| + | se detecteaza apasarile de butoane, primul player care apasa de un numar corespunzatori de ori castiga runda | ||
| + | scorul se actualizeaza, programul o ia de la inceput. | ||
| + | |||
| + | display_score() - afiseaza pe ecran scorul curent al jocului | ||
| + | game_over() - afiseaza ecranul de game over atunci cand un jucator ajunge la 3 puncte | ||
| + | reset() - functie folosita pentru a reseta scorul | ||
| + | |||
| + | Functionare generala: | ||
| + | |||
| + | In setup() se initializeaza pinii si ecranul OLED. | ||
| + | Jocul incepe cand ambii jucatori sunt pregtiti. Timerul intern random incepe si cand se termina un numar de leduri se va aprinde. | ||
| + | Primul jucator care apasa butonul de numarul corespunzator de ori primeste un punct | ||
| + | |||
| + | |||
| + | In ecranul de “Game Over” este resetat scorul | ||
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| + | Start of the game | ||
| + | |||
| + | {{:pm:prj2022:agmocanu:startgame.jpeg?300|}} | ||
| + | |||
| + | |||
| + | Middle of the game | ||
| + | |||
| + | {{:pm:prj2022:agmocanu:midgame.jpeg?300|}} | ||
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| + | |||
| + | Proiectul a fost unul interesant, cea mai grea parte a proiectului a fost sa conectez in mod corect ecranul OLED la Arduino deoarece majoritatea documentatiei este pe I2C. De asemenea, am avut dificultati in a gasi o biblioteca pentru a controla afisarea pe ecran din cod. Intr-un final am obtinut ce mi-am dorit, jocul este functional chiar daca poate fi imbunatatit. | ||
| ===== Download ===== | ===== Download ===== | ||
| + | {{:pm:prj2022:agmocanu:main2.rar|}} | ||