Ruleta Casino

Autor

  • Popescu Florin Marius , 334 CB

Introducere

Jocul de ruleta este un joc de noroc format din: o tabla de numere intre 0 si 36, o roata adancita in mijloc iar pe margini niste locasuri, fiecare locas fiind asociat cu un numar si o bila care este invartita pe marginea rotii.

Jucatorul alege numerele pe care vrea sa faca pariu si asteapta ca bila sa inceapa sa se invarta. Cand se opreste din invartit, bila o sa intre intr-unul dintre locasuri iar acela este numarul castigator.

Daca jucatorul nimereste numarul, el primeste de 36 de ori suma pariata. Din asta se vede ca se pleaca in handicap deoarece in total sunt 37 de numere.

Se poate paria pe mai multe numere, pe numere pare/impare, etc.

In implementarea mea simulatul invartirii bilei este realizat prin intermediul ledurilor. Jucatorul interactioneaza prin butoane, si primeste output printr-un LCD.

Motivul pentru alegerea proiectului NU este pasiunea pentru jocurile de noroc pentru ca ele nu duc decat la pierzanie.

Scopul proiectului este sa se obtina ceva functional, sa dobandesc cunostinte de electronica si sa fie fun.

Descriere generală

Schema bloc:

Mod de funcționare:

⇒ Placuta cu ATmega16 este realizata la etapa 1.

⇒ Cele 15 leduri sunt distribuite circular. Initial se aprind circular unul cate unul cu un delay de 8 milisecunde. La apasarea butonului de start, ele se aprind decelerat pana cand ajung la acceleratie zero. Ledul care ramane aprins este numarul castigator.

⇒ Cele 4 butoane:

  1. START (inscriptionat cu “S” pe placuta) este cel care porneste invartirea decelerata
  2. BET (inscriptionat cu “B” pe placuta) este cel care permite alegerea bet-ului. Range-ul este intre 1 si 50 puncte de credit. Fiecare apasare reprezinta o incrementare a bet-ului care este afisata pe LCD.
  3. SELECT (inscriptionat cu “N” [se apasa repetat pana cand se ajunge la numarul dorit]) permite in functie de modul in care se joaca sa:
    1. se aleaga numarul pe care se vrea sa se faca pariul ( intre 0 si 14 ) (castigul va fi bet * 14, pentru ca 0 nu se ia in calcul pentru calculul probabilitatii. Normal ar fi sa fie bet * 15)
    2. se parieze pe numar par sau impar (0 pentru par si 1 pentru impar) (castigul va fi bet * 2. Daca numarul castigator este 0 atunci nu se castiga nimic)
    3. se parieze pe numar mare sau mic (0 pentru mic si 1 pentru mare) (castig = bet * 2. Nu se castiga nimic daca pica numarul 0)
  4. METHOD (inscriptionat cu “C”) permite alegerea modului de joc:
    1. 0 pentru pariu pe un numar, 1 pentru pariu pe numere pare/impare, 2 pentru pariu pe numere mici/mari

Exista si posibilitatea sa se incrementeze creditul:

  1. Se apasa METHOD apoi se apasa simultan METHOD si SELECT pana cand pe LCD creditul se va incrementa. Se incrementeaza cu 100 la fiecare incercare.

⇒ LCD-ul: mesajul acestuia are urmatorul format: credit mod_joc bet numar, c, win. “c” reprezinta un mesaj de o litera(L in cazul in care pierdem, W in cazul in care castigam) iar “win” numarul castigator. Mesaj se actualizeaza atunci cand se face o modificare. Atunci cand se apasa START noul credit va fi: old_credit - bet.

⇒ Alimentarea placutei cu ATmega16 se face cu usb sau cu un acumulator.

Hardware Design

  • LCD-ul este conectat pe PORTA. Se foloseste doar o sungura linie. Cu o rezistenta variabila se poate seta contrastul.
  • Butoanele sunt conectate pe PORTB. Se folosesc rezistentele de pull-up din ATmega16.
  • Led-urile sunt conectate pe PORTB, PORTC si PORTD. se foloseste o singura rezistenta conectata intre gnd si toate minusurile de la led-uri. Am folosit asa pentru ca se aprinde doar un led la un moment dat.

Kit Ruleta

  • LCD Raystar RC1602B
  • 15 leduri rosii
  • o rezistenta 3k
  • 4 butoane
  • fire
  • rezistenta variabila

Software Design

  • Mediul de dezvoltare: vim
  • Pentru a compila am folosit gcc-avr iar pentru a urca pe microcontroler am folosit avrusboot pentru linux.
  • Algoritmul folosit: Programul asteapta apasarea butonului start. In acest timp ledurile se invart circular cu delay de 8 ms. Ascultarea butonului de start se face dupa ce s-a finalizat un ciclu. Cand s-a apasat START, ledurile se misca decelerat 3 cilcuri dupa care se alege random (cu functia rand()) numarul castigator urmand ca ledurile sa se miste tot decelerat pana se ajunge la numarul castigator. Cand se asculta pentru celelalte butoane, se actualizeaza mesajul LCD-ului. API-ul pentru LCD este luat din laborator. Mai multe detalii in codul sursa.

Rezultate Obținute

Am obtinut o ruleta functionala si fun.

Concluzii

A fost foarte fun sa lucrez la acest proiect, de la partea de lipit pana la partea de programat si ma bucur ca am obtinut ceva functional. Am intampinat o gramada de probleme: mi s-a ars odata ATmega16 si de vreo doua ori am scris peste bootleader :)) pentru ca aveam programul prea mare.

Download Cod Sursă

Bibliografie / Resurse

  • Datasheet ATmega16: 2466S.pdf
  • Proiecte din anii trecuti si laborator.
pm/prj2012/pbara/14.txt · Last modified: 2021/04/14 17:07 (external edit)
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