Slot Machine

Nume: Rolea Theodor-Ioan

Grupa: 333CA

Introducere

Imaginează-ți că poți aduce atmosfera cazinoului în propria ta casă, fără a risca să pierzi bani reali. Acest proiect îți permite să construiești o păcănea electronică personalizată folosind un Arduino UNO și o serie de componente, precum matrice LED, afișaj cu 7 segmente, LCD și butoane pentru controlul jocului. Vor fi folosite trei matrice LED 8×8 pentru a afișa roțile păcănelei, împreună cu un afișaj cu 7 segmente pentru a arăta fondurile disponibile. Butoanele permit interacțiunea cu jocul, iar un buzzer oferă feedback audio pentru a face experiența mai captivantă. În plus, pe LCD vor fi afișate informații despre miză și posibilele dublaje.

Descriere generală

Jucătorii vor apăsa pe butonul de spin și vor urmări cum se aliniează simbolurile pe cele trei roți ale păcănelei. În cazul unui câștig, pe LCD va fi afișată opțiunea de dublare, pe care jucătorii o pot selecta sau omite folosind cele două butoane disponibile. În cazul unui jackpot, se va realiza un joc inedit de lumini și sunete.

Concepte folosite:

  1. GPIO & Întreruperi - Butoanele sunt legate la pini GPIO pentru a le citi starea (apăsat/neapăsat) și generează întreruperi atunci când sunt apăsate.
  2. Timere - Sunt folosite pentru generarea simbolurilor pe matrice, numărând un anume timp la fiecare apăsare de buton până când animația se va opri.
  3. I2C - LCD-ul și modulul cu 7 segmente comunică cu Arduino prin I2C.
  4. SPI - Matricele MAX7219 folosesc SPI pentru a comunica cu Arduino.

Schema bloc:

Hardware Design

Schema aproximativă a proiectului în Tinkercad:

*Nu există matrice LED 8×8 sau modulul cu 7 segmente folosit de mine în Tinkercad, am folosit ce era disponibil.

Lista Piese:

Arduino UNO × 1

MAX7219 8×8 LED Matrix × 3

7 Segment LED Display Module with Serial Interface (TM1637 Chip) × 1

Button × 2

Buzzer × 1

1602 LCD with I2C Interface × 1

Resistor × 1

Schema electrică:

Demo:

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare: ArduinoIDE
  • librării şi surse 3rd-party: LedControl, TimerFreeTone, LED, LiquidCrystal_I2C, TM1637Display

Github: Slot Machine Code

Explicație pe scurt a codului:

1. Structura și Variabile Globale:

  1. Am creat o structură `spinDigit` pentru a ține informațiile despre fiecare roată a jocului.
  2. Am inițializat variabile globale pentru statistici și setările jocului, cum ar fi balanța de credite, numărul de jocuri jucate, sumele plătite etc.

2. Funcția `setup()`:

  1. În această funcție configurez pinii, inițializez componentele hardware, setez un seed pentru randomizare și inițializez afișajele.
  2. Afișez un ecran de pornire și setez simbolurile inițiale ale rolelor.

3. Funcția `loop()`:

  1. Aștept apăsarea unui buton pentru a începe jocul.
  2. Realizez rotirea rolelor și calculez câștigurile.
  3. Actualizez balanța de credite și afișez miza curentă.

4. Alte funcții:

  1. `spinTheWheels()`: Controlează rotirea rolelor.
  2. `displayWheelSymbol()`: Afișează simbolurile pe roți.
  3. `highlightWinAndCalculatePayout()`: Determină dacă jucătorul a câștigat și calculează câștigurile.
  4. `flashSymbol()`: Flash-uri pentru simbolurile câștigătoare.
  5. `playSplashScreen()`, `playMelody()`, `winSound()`: Funcții pentru efecte sonore și vizuale.
  6. `adjustCreditBalance()`, `displayWager()`: Actualizează și afișează balanța de credite.
  7. `waitOnButtonPress()`, `waitOnButtonPressDouble()`: Gestionează apăsarea butoanelor pentru a începe jocul și pentru a dubla câștigurile.

Rezultate Obţinute

Video demo: Demo Video Slot Machine

Video varianta finală: Video Slot Machine

Concluzii

Acest proiect nu doar că mi-a aprofundat înțelegerea programării Arduino și a integrării hardware, dar a evidențiat și importanța organizării și modularității codului. Îmbunătățirile viitoare ar putea include animații mai sofisticate, efecte sonore suplimentare și elemente de interfață cu utilizatorul îmbunătățite.

Download

Cod sursă, biblioteci folosite si README (.zip):

slotmachine_sourcecode.zip

Jurnal

02.05.2024: Am încărcat datele principale despre proiect: introducere, descriere, bill of materials.

09.05.2024: Am încărcat și o schemă provizorie a circuitului și am mai ajustat câteva componente.

16.05.2024: Am refăcut schemele cu noile componente cumpărate și am adăugat și codul sursă.

24.05.2024: Am încărcat codul final + demo

Bibliografie/Resurse

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

Matrix Slot Machine inspiration 1 Matrix Slot Machine inspiration 2

Export to PDF

pm/prj2024/ccontasel/theodor.rolea.txt · Last modified: 2024/05/25 19:28 by theodor.rolea
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