Autorul poate fi contactat la adresa: Login pentru adresa
Scopul acestui proiect este de a crea un aparat ce simulează un slot machine (aparat de jocuri de noroc). Fructele din clasicele jocuri de noroc vor fi reprezentate de LED-uri RGB.
Prin intermediul butoanelor se va putea stabili soldul inițial, selecta modul de joc, selecta betul pentru fiecare rundă. Toate informațiile vor fi afișate pe un LCD. După fiecare rundă se va actualiza soldul curent. Prin intermediul unui buzzer activ, jucătorului îi este semnalat câștigul unei runde sau pierderea acesteia.
Utilitatea acestui proiect este posibilitatea de a încerca un joc de noroc.
Nr. piese | Nume piese | Link / Observații |
---|---|---|
15 | Led RGB | LED-uri RGB |
1 | Buzzer | Buzzer activ |
1 | LCD | LCD |
5 | Buton | Butoane |
1 | Placa de baza cu ATMega324 | |
43 | fire de legatura | Fire colorate tată-tată + Fire colorate mamă-mamă |
9 | Rezistente | 1k - pentru LED-uri |
2 | Placă de test | Placă de test |
1 | Header pini | Header Pini |
2 | Header pini (40p) | Header pini (40p) |
1 | Cablu alimentare | Cablu alimentare |
12 | Distanțieri | De pe strada Maica Domnului |
2 | Plăcuțe plexiglas | De la Dedeman |
Schema electrică:
Schema electrică a fost realizată în Eagle. Cele 15 leduri sunt amplasate într-o matrice de pixeli. Aceasta va ocupa 14 pini: 3R, 3G, 3B, 5 Catod. Pe fiecare legătură cu LED este o rezistență.
Folosesc 5 butoane: START (începerea jocului), GET_MONEY (jocul se termină, scoți banii), RED/BLUE (se dublează miza - mod de ghicire a culorii), DEC (scade bet-ul sau suma inițială), INC (crește bet-ul sau suma inițială).
Mediul de dezvoltare a fost Atmel Studio 7.0, iar pentru încărcarea pe microcontroller am folosit HID Boot Flash.
Biblioteci incluse
#include <avr/io.h> #include <util/delay.h> #include <stdio.h> #include <time.h> #include <stdlib.h> #include <string.h>
Pe lângă acestea, am inclus mai multe headere create de mine, plus fișierele pentru LCD din laborator (ușor modificat header-ul - pinii de date și cei de control).
Headere proprii
#include "turnoff.h" #include "turnon.h" #include "display.h" #include "init.h" #include "forms.h" #include "double_game.h" #include "game.h"
Modificări Header LCD
/*****************************************************************************\ * Define-uri pentru parametrizarea bibliotecii LCD * \*****************************************************************************/ // Portul pe care conectam pinii de date ai LCD-ului #define LcdDATA_DDR DDRC #define LcdDATA_PORT PORTC #define LcdDATA_PIN PINC // Pinii de date ai LCD-ului #define LcdD4 PC6 #define LcdD5 PC5 #define LcdD6 PC4 #define LcdD7 PC3 // Portul pe care conectam pinii de control ai LCD-ului #define LcdCTRL_DDR DDRA #define LcdCTRL_PORT PORTA #define LcdCTRL_PIN PINA // Pinii de control ai LCD-ului #define LcdRS PA5 #define LcdRW PA6 #define LcdE PA7
Nu am folosit anumiți algoritmi în implementare. Am implementat funcții de aprindere/stingere a fiecărui LED, funcții de aprindere/stingere linii, diverse funcții de afișare pe LCD.
void display_sold(int sold); void display_bet(int bet); void display_mode(char mode[]); void display_top_line(int sold); void display_bottom_line(int bet, char mode[]); void display(int sold, int bet, char mode[]); void clear_LCD(); void display_double_game(); int display_double_game_result(int right_colour, int chosen_colour); void display_end_game(int sold); void turnOnMatrix(int** matrix); void tonLED11(int colour); //analog pentru celelalte LED-uri din matrice void toffLED11(int colour); // analog pentru celelalte LED-uri din matrice
De asemenea, funcții de aprindere a LED-urilor în diferite formații specifice unui Slot Machine.
Jocul începe cu o sumă inițială (sold = 1000), pe care jucătorul poate să o crească prin intermediul butoanelor și cu o sumă pentru pariat (bet = 50), pe care jucătorul o poate modifica de asemenea.
După fiecare rundă, jucătorul poate să aleagă să își dubleze câștigul curent prin alegerea modului de joc double (jucătorul trebuie să aleagă între roșu și albastru; dacă alege culoarea bună, câștigul îi este dublat și poate să încerce din nou să îl dubleze). Desigur, există riscul de a pierde jocul double ( pierzând astfel și suma câștigată în runda normală).
Jocul se termină în momentul în care jucătorul hotărăște să nu mai joace (butonul Get Money) sau nu mai are credit.
Am ales ca proiectul să se apropie cât mai mult de forma unui Slot Machine real. După prima rundă, vom vedea matricea de leduri cu “fructele” ce au apărut în runda respectivă. Dacă am câștigat ceva, suma va fi adăugată la soldul curent. Putem de asemenea să creștem suma pariată într-o rundă.
Putem alege să schimbăm modul de joc (Double). Se vor aprinde două LED-uri, unul roșu și unul albastru. Alegem ce culoare este LED-ul din mijloc. Dacă ce alegem este corect, câștigul din runda basic se dublează și putem să jucăm în continuare. Există desigur riscul de a pierde câștigul din runda basic sau cel din modul double (în cazul în care culoare aleasă de noi este greșită).
Dacă sold-ul ajunge la 0, jocul se termină. De asemenea, jucătorul poate să aleagă să se retragă, rămânând cu suma obținută până atunci.
Lucrul efectiv la proiect a fost interesant . A fost frustrant la început, pentru că nu aveam îndemânarea necesară pentru a lipi componentele, dar am învățat în timp. Nu îmi plăcea când realizam că mai am nevoie de alte componente (fire, rezistențe)
, neputând să fac rost în timp util de ele și trebuind să amân lucrul la proiect
.
Am încercat să acopăr cât mai mult din funcționalitățile normale ale unui Slot Machine. De asemeneam, am încercat să aduc și design-ul hardware-ului cât mai aproape de cel al unui Slot Machine.
Am avut câteva probleme cu pinii (PD2, iar apoi PD7), la care am conectat un buton, dându-mi seama ulterior că nu mergeau acei pini și am fost nevoit să modific schema electrică .
A durat ceva până m-am obișnuit cu lucrul cu matricea de LED-uri și cu LCD-ul (proiectul depășind ce făcusem în laborator). Cu toate acestea, m-am bucurat de fiecare mică reușită .
Am ales la început această temă de proiect pentru că mi s-a părut interesantă ideea de a face un Slot Machine, dar în timp aceasta mi-a depășit așteptările, devenind din ce în ce mai interesantă.
6 Mai Schema electrică a proiectului
23 Mai Versiune finală (actualizare listă de piese, schemă electrică, software design, rezultate obținute, concluzii, download, bibliografie/resurse)