This shows you the differences between two versions of the page.
pm:prj2022:arosca:darian.vrabie [2022/05/24 01:30] darian.vrabie |
pm:prj2022:arosca:darian.vrabie [2022/05/24 02:12] (current) darian.vrabie |
||
---|---|---|---|
Line 4: | Line 4: | ||
===== Descriere generala ===== | ===== Descriere generala ===== | ||
* Jocul are 2 "caractere": masina controlata de jucator, care se afla in partea inferioara a matricei de LED-uri, si masinile ce vin de pe partea opusa. Scopul jocului este simplu: nu te ciocni cu celelalte masini pentru cat mai mult timp. | * Jocul are 2 "caractere": masina controlata de jucator, care se afla in partea inferioara a matricei de LED-uri, si masinile ce vin de pe partea opusa. Scopul jocului este simplu: nu te ciocni cu celelalte masini pentru cat mai mult timp. | ||
- | {{:pm:prj2022:arosca:diag_gen.png?800|}} | + | {{:pm:prj2022:arosca:diag_gen.png?700|}} |
===== Implementare Hardware ===== | ===== Implementare Hardware ===== | ||
Componentele necesare: | Componentele necesare: | ||
Line 25: | Line 25: | ||
* Se observa de asemenea prezenta a doua butoane. Ele sunt folosite pentru a misca masina jucatorului in stanga si in dreapta. | * Se observa de asemenea prezenta a doua butoane. Ele sunt folosite pentru a misca masina jucatorului in stanga si in dreapta. | ||
===== Schema hardware ===== | ===== Schema hardware ===== | ||
- | todo | + | {{:pm:prj2022:arosca:diag_hardware.png?800}} |
===== Implementare software ===== | ===== Implementare software ===== | ||
Line 34: | Line 34: | ||
* Variabila ce denota linia pe care un inamic va aparea este de asemenea schimbata intr-o intrerupere, insa de data aceasta folosesc o intrerupere pe timerul intern. | * Variabila ce denota linia pe care un inamic va aparea este de asemenea schimbata intr-o intrerupere, insa de data aceasta folosesc o intrerupere pe timerul intern. | ||
* Miscarea inamicului este tratata in aceeasi intrerupere. La un anumit interval de timp, creste indexul coloanelor pe care sunt "desenati" inamicii. | * Miscarea inamicului este tratata in aceeasi intrerupere. La un anumit interval de timp, creste indexul coloanelor pe care sunt "desenati" inamicii. | ||
+ | * Inamicii pot veni de pe maxim 3 linii (mereu ramane una libera), la intervale aleatorii. | ||
* Coliziunea jucatorului cu un inamic este tratata la fiecare ciclu. Daca o masina inamica ajunge pe aceleasi coloane si aceeasi linie cu jucatorul, jocul se opreste, se aprind toate led-urile pentru a semnala acest lucru, si jocul o ia de la capat. | * Coliziunea jucatorului cu un inamic este tratata la fiecare ciclu. Daca o masina inamica ajunge pe aceleasi coloane si aceeasi linie cu jucatorul, jocul se opreste, se aprind toate led-urile pentru a semnala acest lucru, si jocul o ia de la capat. | ||
===== Rezultat final ===== | ===== Rezultat final ===== | ||
- | * | + | * Video: https://www.youtube.com/watch?v=uSwPenMtLd0 |
- | ===== Bibliografie/Resurse/Ghiduri folosite ===== | + | ===== Concluze ===== |
+ | * Acest proiect m-a invatat <del>ca trebuie sa ma apuc mai devreme de proiecte</del> cum functioneaza un shift register folosit pentru a controla foarte multe LED-uri. De asemenea, am aprofundat conceptul de intrerupere, atat intreruperi hardware cat si folosirea unui timer intern. | ||
+ | ===== Resurse/Ghiduri folosite ===== | ||
* Canalul DroneBot Workshop https://www.youtube.com/c/Dronebotworkshop1 pentru: | * Canalul DroneBot Workshop https://www.youtube.com/c/Dronebotworkshop1 pentru: | ||
* Cum sa folosesc un cip shift register | * Cum sa folosesc un cip shift register | ||
* Aprofundare intreruperi | * Aprofundare intreruperi | ||
* Laboratoare PM | * Laboratoare PM | ||
+ | ===== Download cod sursa ===== | ||
+ | * https://github.com/darian1901/retro_racing_game_arduino | ||
<note> | <note> | ||
- | Jocul original: https://www.youtube.com/watch?v=H-L_ra5kT3k | + | Jocul original, inspiratia acesui proiect: https://www.youtube.com/watch?v=H-L_ra5kT3k |
</note> | </note> | ||