Piano Tiles

Nume: Bîncă Andreea-Cristina

Grupa: 332CC

Introducere

Piano Tiles este un joc muzical în care obiectivul jucătorului este să apese pe butoanele corespunzătoare în momentul indicat prin aparitia unor blocuri colorate ce coboară pe ecran. Atunci când un astfel de bloc ajunge în partea de jos a ecranului, acesta trebuie apăsat, iar jocul va emite o notă muzicală, în funcție de melodia aleasă.

Descriere generală

În momentul în care jocul este pornit, jucătorul este întâmpinat de un meniu, din care poate alege să joace sau doar să asculte melodiile. Jucătorul va avea la alegere mai multe melodii. Selecția va fi făcută prin intermediul unui joystick.

În implementarea jocului sunt folosite 4 butoane ce trebuie apăsate la momentul corect conform afișării de pe ecran, în ton cu muzica redată printr-un buzzer (se va aprinde și un led albastru în același timp). În momentul în care se apasă un buton greșit, se aprinde un led roșu, semnificând o viață pierdută. Dacă se ajunge la 3 leduri aprinse, jocul este pierdut.

Hardware Design

Componente

  • Arduino Uno
  • Breadboard
  • Display OLED
  • 4 LED-uri
  • 4 butoane
  • 1 buzzer activ
  • 1 joystick
  • 1 modul cititor carduri microSD

Schemă electrică

Software Design

Mediu de dezvoltare

  • Arduino IDE
  • VSCode (extensie pentru Arduino)

Biblioteci utilizate

  • Adafruit_GFX.h
  • Adafruit_SSD1306.h
  • SD.h
  • Wire.h
  • time.h
  • pitches.h (definit de mine pentru note muzicale)

Implementare

În fișierul piano_tiles.h sunt definite macrourile pentru input-uri, variabilele pentru butoane, joystick, display, template-uri pentru afișarea pe ecran, melodiile și sunt definite funcțiile de play și listen.

În fișierul piano_tiles.ino sunt implementate funcțiile:

setup()
  • se setează pinii de input/output;
  • se configurează display-ul;
  • se inițializează bufferele.
loop()
  • se selectează din meniu PLAY sau LISTEN folosind joystick-ul pe axa OX și apăsând pe acesta;
  • se selectează cântecul dorit SONG 1 sau SONG 2 folosind joystick-ul pe axa OY și apăsând pe acesta;
  • în cazul în care s-a ales funcția de PLAY va porni jocul pe cântecul ales;
  • în cazul în care s-a ales funcția de LISTEN va porni redarea cântecului ales.
play_song(...)
  • se generează pe ecran linie cu linie cântecul și se verifica apăsarea butonului corespunzător tile-ului care urmează să ajungă pe ultima linie;
  • dacă s-a apăsat la timp, buzzer-ul va cânta, iar un led albastru se va aprinde;
  • dacă s-a apăsat greșit sau deloc, se va aprinde un led rosu, semnificând o viață pierdută;
  • dacă se ajunge la finalul cântecului, va apărea pe ecran mesajul GAME WON!;
  • dacă se fac 3 greșeli, va apărea pe ecran mesajul GAME LOST.
listen_song(...)
  • se afișează un ecran de titlu SONG;
  • se generează cântecul redat prin buzzer și se aprinde led-ul albastru.

Rezultate Obţinute

Meniul:

Functia de joc:

Functia de redare:

Demo în arhivă.

Concluzii

În cadrul proiectului am învățat să folosesc noțiunile predate în laboratoare, dar și din aprofundarea personală. Rezultatul a fost un joculeț drăguț, care în viitor poate fi îmbunătățit.

Download

Jurnal

  • 05.05.2022 - Testare componente și realizare schemă electrică
  • 13.05.2022 - Actualizare pagină ocw
  • 17.05.2022 - Definitivare implementare hardware și începerea implementării software
  • 23.05.2022 - Implementarea unui cântec
  • 24.05.2022 - Implementare parțială a meniului
  • 26.05.2022 - refacere cod și implemetare nouă de cântece
  • 27.05.2022 - Definitivarea codului + actualizare pagina ocw

Bibliografie/Resurse

pm/prj2022/ndrogeanu/piano_tiles.txt · Last modified: 2022/05/28 23:59 by andreea.binca
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0