Sequence Guess Game

Introducere

Proiectul implementează un joc de tipul Mastermind. Scopul jucătorului este să ghicească o secvență aleatoare de simboluri unice generate de Arduino prin încercări repetate, acesta primind indicii de fiecare dată. Am pornit de la ideea jocului Wordle, a cărui concept e similar, însă în loc de secvențe aleatoare se folosesc cuvinte din limba engleză. Jocul este interesant și poate fi folosit pentru a antrena abilitățiile logice ale jucătorului.

Descriere generală

  • Joystick-ul este folosit pentru a permite jucătorului să introducă secvența dorită (prin mișcarea stânga-dreapta se selectează poziția, iar prin mișcarea sus-jos se selectează simboluri de la 1 la 9).
  • Pe ecranul LCD 16 x 2 se va afișa ultima încercare pe prima treime, secvența curentă pe a doua treime și timpul rămas pe a treia. Jucătorul va putea naviga în istoric, vizualizând și celelalte încercări, nu doar ultima.
  • LED-urile se vor aprinde corespunzător (câte un led verde pentru fiecare simbol pus corect în poziția corectă și câte un led galben pentru fiecare simbol corect dar pus în poziție incorectă). LED-urile se vor ajusta în funcție de încercarea vizualizată.
  • Când timpul alocat este aproape de a expira, buzzer-ul va emite semnale sonore de avertisment.

Hardware Design

Componente:

  • Arduino UNO
  • Joystick tip PS2
  • Ecran LCD 16×2 cu modul I2C
  • Buzzer pasiv
  • LED-uri verzi și galbene
  • Rezistențe, fire, breadboard

Software Design

Proiectul folosește următoarele funcționalităti ale plăcii Arduino:

  • Biblioteca LiquidCrystal_I2C.h pentru programarea ecranului LCD prin I2C
  • Pinii analogici A0 și A1 și ADC-ul plăcii pentru a citi starea joystick-ului
  • Funcția tone() pentru a genera sunete pe buzzer
  • Timer-ul 1 pentru a temporiza trecerea secundelor

Pentru a genera o secvență de 4 cifre aleatoare care nu se repetă, am observat că metoda evidentă (generează câte o cifră și verifică dacă e egală cu vreo cifră generată anterior) nu e eficientă, iar placa stătea blocată încercând să genereze secvența. Pentru a genera mai rapid o secvență, am folosit algoritmul Fisher-Yates aplicat pe un vector care conține toate cifrele de la 0 la 9.

Rezultate Obţinute

Download

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2023/gpatru/teodor.tiron.txt · Last modified: 2023/05/29 15:55 by teodor.tiron
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