Pacanea

Autor: Nitu David-Gabriel
Grupa: 336CB

Introducere


“99% din pariori se opresc inainte de marele lor castig” - Raul Bocanu
“Orice sansa neluata e o sansa ratata” - Bocanu Raul
“Nu risti nu castigi” - tata
“Aschia nu sare departe de trunchi” - din folclor

Acestea sunt citatele care ma motiveaza. Toata lumea imi zice sa ma las de pacanele pentru ca voi deveni dependent, dar eu joc de 5 ani fiecare ban de care fac rost si nu am devenit dependent deci nu stiu ce vor de la mine.
Din aceasta pasiune pentru pariuri si pentru senzatia unica pe care o simti cand ultimii tai bani sunt rulati la pacanea si nu stii daca vei mai avea ce manca ziua urmatoare am ales aces proiect.

Proiectul meu este o pacanea formata din trei led-uri palpaitoare, cu o pusculita in care se pot introduce bani ce vor fi adaugati la balanta. Pacaneaua este actionata de un buton, iar rezultatul este afisat pe un ecran LCD, a carui luminozitate poate fi reglata, pentru ca pacaneaua sa poata fi jucata in orice conditie.
Acest proiect este util pentru altii deoarece pariurile sunt un mod sigur de a face bani cat timp nu te dai batut.

Descriere generala

Balanta va fi 0 la inceput, asa ca vor trebui sa fie introdusi mai intai bani(bancnote) in pusculita. Pusculita va fi o cutie de carton cu o gaura pe unde sa intre bancnota si un senzor de distanta in dreptul gaurii care detecteaza cand banii sunt adaugati si updateaza balanta.
Acum ca avem bani in pusculita, putem sa jucam prin apasarea butonului. Odata ce pariul a fost facut, led-urile incep sa palpaie, urmand sa se opreasca pe unul dintre posibilele outcome-uri. Rezultatul este afisat pe ecran. Daca jucatorul nu a pierdut, el are 5 secunde sa parieze iar, caz in care led-urile palpaie iar si alt rezultat va fi afisat. Daca trec 5 secunde de la afisarea rezultatului pe ecran apare optiunea de cash out: PIN-ul de la lacatul ce tine cutia inchisa. Dupa aparitia PIN-ului, balanta este resetata la 0. In cazul in care jucatorul pierde, balanta este resetata direct la 0. Ecranul poate fi reglat prin potentiometru.

Hardware Design

Lista de piese:

  • Arduino nano
  • Ecran LCD 1602A
  • Potentiometru
  • Senzor ultrasonic distanta HC-SR04
  • 3 LED-uri RGB
  • 1 buton
  • Rezistori
  • Placa pcb
  • Fire




Senzorul ultrasonic si butonul sunt legate ca input la placuta Arduino nano. Butonul este legat la un rezistor de 10k Ω. LED-urile sunt legate ca output, si necesita folosirea unor rezistori de 330 Ω. Tot ca output este legat si ecranul LCD 1602A, care are nevoie si el de un rezistor de 330 Ω pentru a nu face scurt, si care la randul lui primeste input de la potentiometru. Pentru lipituri am folosit un ciocan de lipit imprumutat de la un prieten:). Arduino nano este alimentat printr-un micro USB de la laptop.

Software Design

Am folosit libraria LiquidCrystal.h pentru a afisa text pe LCD.
Initial am spus ce pin e input si ce pin e output in setup().
Cam tot se petrece in loop(), in care sunt folosite functii auxiliare precum:
readDistance(int, int) care returneaza distanta citita de senzor.
generateOutcome(int) care este practic toata implementarea ideii de pacanea. Se alege un numar random si in functie de probabilitatile alese, se intra intr-unul dintre if-uri afisandu-se rezultatul si updatandu-se suma.
rollLights() care face LED-urile sa palpaie.
resetLED() care evident opreste LED-urile.
printBank() care afiseaza suma de bani curenta.
printSafeCode() care arata PIN-ul de la lacat.
Inainte de orice avem label-ul start care e folosit pentru a reseta pacaneaua cand balanta ajunge la 0. Asadar flow-ul din loop incepe cu afisarea banilor din banca. Banca este updatata daca senzorul detecteaza o bancnota, si balanta noua este afisata. Pe LCD ramane balanta curenta pana la apasarea butonului. Avem apoi label-ul bet_again care ne permite sa jucam din nou in cazul in care nu pierdem banii. Dupa ce butonul e apasat, jocul de pacanea incepe, implementat prin functiile auxiliare si prin cateva variabile precum buttonCounter(care ma ajuta sa imi dau seama daca dupa finalul unui bet e apasat iar butonul) si afterBetTime(care ma ajuta sa vad daca au trecut 5 sec dupa finalizarea bet-ului curent pentru a afisa PIN-ul). Astfel sunt 2 cazuri mari: betul se termina cu 0 bani in banca si se revine la label-ul start, sau betul se termina neutru sau mai bine, caz in care ori se afiseaza PIN-ul de la lacat ori se revine la label-ul bet_again(daca butonul este apasat in mai putin de 5 secunde de la finalizarea betului).
Am folosit si Serial.println pentru a utiliza UART.

Rezultate Obtinute

Mai jos am atasat un link catre un demo scurt. https://youtube.com/shorts/tP9zxzsjyGQ?feature=share

Parerea mea e ca a iesit un proiect destul de fun si usor de jucat.

Concluzii

A fost o experienta tare sa fac acest proiect. Primele probleme au aparut inca din alegerea pieselor pentru ca am luat din greseala alt ecran lcd decat pe cel pe care il voiam:). M-am descurcat totusi cu cel pe care l-am comandat. As zice ca cea mai mare dificultate a fost la lipire, insa am avut noroc sa am un ciocan de lipit la indemana si sa primesc niste sfaturi despre folosirea lui. Alta problema a fost la buton, pentru ca am vrut sa fac cu intreruperi insa nu m-am uitat de dinainte la specificatiile placutei si am aflat ca nu toate intrarile pot face intreruperi de-abia dupa ce lipisem tot. In ciuda tuturor aceste obstacole, acest proiect m-a invatat multe despre lucrul practic si despre cata rabdare e necesara pentru a face ceva. Chiar daca pacaneaua mea nu e foarte complicata, m-am distrat realizand-o si am dobandit multe cunostinte noi:)

Download

Jurnal

  • 2.05.2023: Am ales tema si am confirmat cu Ionut ca e ok
  • 5.05.2023: Am inceput sa lucrez la schema hardware, si am ales piesele
  • 9.05.2023: Am creat pagina de ocw si am adaugat introducerea si descrierea generala
  • 12.05.2023: Mi-au venit piesele comandate
  • 16.05.2023: Am terminat schema hardware si am inceput sa conectez piesele
  • 20.05.2023: Am facut rost de ciocan de lipit de la un prieten si am lipit tot
  • 25.05.2023: Am inceput sa scriu soft-ul pentru pacanea, am confectionat cutia de carton si am facut senzorul sa poata cat de cat sa recunoasca bancnotele
  • 27.05.2023: Am terminat partea de software
  • 29.05.2023: Am terminat pagina de ocw

Bibliografie/Resurse

pm/prj2023/iotelea/pacanea.txt · Last modified: 2023/05/30 15:26 by david_gabriel.nitu
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