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|}} | ||