This is an old revision of the document!


Whac a Mole

Introducere

Dispozitivul are ca scop testarea vitezei de reactie prin intermediul unui joc inspirat din ideea clasică a jocurilor de tip „Whac-A-Mole”.

Scopul jocului este să nimerești sau să atingi (cu degetul, ciocan de jucărie sau alt obiect) gaura din care iese „viermele” cât mai repede, înainte ca acesta să dispară.

Dispozitivul poate fi folosit si in educatia copiilor care implică învățarea culorilor, literelor sau numerelor – viermii având etichete pe ei.

Tabla de joc are mai multe găuri (in cazul nostru 4), aranjate într-o rețea.

În fiecare gaură poate apărea, la întâmplare, un „vierme”

Viermele apare doar pentru o perioadă scurtă ( 1 secunda ), apoi dispare.

Jucatorul trebuie să fie rapid și atent, să „loveasca” sau să atinga gaura exact atunci când viermele apare.

Descriere generală

Punctaj: este contorizat un punct pentru fiecare vierme nimerit.

Durata: jocul are o durată fixă (60 de secunde), iar scopul este obtinerea celui mai mare scor posibil.

Gradul de dificultate poate fi crescut sau scazut prin modificarea frecventei cu care apare viermele.

Modul de realizare

Se aplica cunostintele din:

Laboratorul 2- Intreruperi, rutine de tratare a intreruperilo

Laboratorul 3 - Lucru cu timere

Laboratorul 4- Utilizarea conversiei analog-dugitala,

Laborator 5 - Utilizarea comunicatiei cu un periferic prin intermediul protocolului SPI.

Placa de dezvoltare Arduino comanda aleatoriu 4 servomotoare prin intermediul a 2 drivere cu 2 canale care simuleaza iesirea din gaura a viermelui.

Viteza cu care este generata comanda de iesire a viermelui este variabila fiind reglata cu un potentiometru. Tensiunea variabila dependenta de pozitia cursorului potentiometrului este folosita de convertorul analog digital al microcontrolerului care va seta prescalarul ce da intreruperea folosita la comanda servomotoarelor.

Starile de apasat sau neapasat a celor 4 butoane sunt folosite ca semnale de intrare si daca este coincidenta intre apasare si aparitie se incrementeaza un contor.

Durata jocului este stabilita prin intermediul unui timer care valideaza selectarea aleatorie a unuia din cele 4 servomotoare . Timerul este declansat de un buton de start.

Numarul de aparitie a viermelui si a numarului de reusite se memoreaza . Aceste sunt prelucrate (se calculeza rata de reusite) si sunt afisate in timp real prin intermediul protocolului SPI la un display

Bill of Materials

Componente:

* servomotor https://www.bitmi.ro/electronica/servomotor-sg90-180-grade-9g-10496.html
* placuta https://www.bitmi.ro/electronica/placa-de-dezvoltare-originala-arduino-uno-rev3-11135.html
* shield https://www.bitmi.ro/electronica/shield-cu-mini-breadboard-pentru-prototipuri-compatibil-arduino-uno-r3-10387.html* 
* butoane https://www.bitmi.ro/electronica/modul-4-butoane-compatibil-arduino-11739.html
* alimentator https://www.bitmi.ro/produse?c=alimentator+5v
* display https://www.bitmi.ro/modul-cu-ecran-lcd-1-8-128x160-tft-spi-serial-10996.html?gad_source=1&gbraid=0AAAAADLag-l-6kiMOONKNep48A8ls224S&gclid=Cj0KCQjwoNzABhDbARIsALfY8VMnb-XmQVW9C1-ztcAgU3pBvpWdiGxeQS6am921yAxkY5ywtsl8uXAaAnVXEALw_wcB

Schema bloc

Cablaj

Schema electrica

Descriere functionalitate hardware

  • S1,S2,S3,S4 – servomotoare comandate cu modulatie PWM de tip SG90 care vor fi programate sa ridice bratul 90 de grade simuland astfel aparitia viermelui.
  • B1,B2,B3,B4,B5 - butoane de tip punch cu revenire
  • Potentiometru - pentru reglarea vitezei aparitiei viermelui de la 0.5s la 2s; este de tip liniar cu valoarea de 10Kohmi.
  • Displayul este tip LCD de 1.8 inch cu rezolutia maxima de 128×160 , interfata SPI care afiseaza 3 informatii: 1. Nr de aparitii vierme(Na), 2. Nr de reusite(coincide numarul gaurii unde a aparut viermele cu apasarea butonului asignat) (Nr), 3. Procentul de reusite %= (Nr/Na)x100.
  • Curentul maxim pe care il consuma montajul este suma urmatoarelor consumuri partiale- Arduino(datasheet) = 100mA- Potentiometru(5V/10kohmi) = 0,5mA- Servomotor (datasheet = 250mA) Observatie importanta: cu toate ca sunt 4 la numar, ele se manevreaza aleatoriu, niciodata simultan.- Dispalay(datashhet) = 100mATOTAL= 450,5mAAvand in vedere ca valoarea maxima recomandata pentru alimentarea din portul USB 2 (laptop)este de cca 500mA rezulta ca montajul poate functiona in siguranta alimentat din portul USB. Pentru siguranta in functionare , protejarea laptopului in caz de scurtcircuit in montaj si realizarea functionarii independente a montajului , acesta dupa incarcarea si testarea programului va fi alimentat de la o sursa externa de 5V si curent maxim mai mare de 1A.

Justificare alegere pini

Componente:

  1. → S1,S2,S3,S4 - servomotoare
  2. → B1,B2,B3,B4 - butoane utilizate in joc, corespunzand “viermilor” indicati de S1,S2,S3,S4
  3. → B5 - buton de on/off
  4. → placuta Arduino Uno
  5. → mini breadboard
  6. → potentiometru
  7. → display SPI
  • Fiecare dintre S1-S4 are 3 fire: maro(GND), rosu(VCC) si portocaliu(cablu de date). Toate cele 4 cabluri de date au fiecare nevoie de cate un pin digital(0-13) la care sa se conecteze pe placuta, dar din cauza principiului PWM utilizat de catre servomotoare, pentru aceste cabluri de date am doar 6 pini digitali disponibili(cei marcati cu ~ pe placuta):3,5,6,9,10,11. Am ales urmatoarea asignare: S1 cu 3, S2 cu 5, S3 cu 6 si S4 cu 9.
  • Pinii digitali ramasi liberi sunt: 0,1,2,4,7,8,10,11,12 si 13.
  • Display-ul de SPI prezinta urmatorii pini: VCC,GND,CLK,SDA,RS,RST si CS. In datasheetul sau avem impuse urmatoarele corespondente impuse pentru Arduino Uno: CLK la 13, SDA la 11, RS la A3, RST la A4 si CS la A5. Pinii analogici de pe placuta sunt A0,A1,A2,A3,A4,si A5.
  • Pinii digitali liberi ramasi sunt: 0,1,2,4,7,8,10,12.
  • Pinii analogici liberi ramasi sunt: A0,A1,A2.
  • Butoanele B1- B5 trebuie conectate la niste pini digitali liberi ramasi pe placuta. Am ales urmatoarea asignare: B1 la 1, B2 la 2, B3 la 4, B4 la 7 si B5 la 8.
  • Pinii digitali liberi ramasi sunt: 0,10,12.
  • Potentiometrul are 3 pini: GND, VCC si unul care trebuie conectat la un pin analogic de pe placuta; aleg sa il conectez la A2.
  • Pinii analogici liberi ramasi sunt A0 si A1.
  • B1-B4 se afla toate pe aceeasi componenta fizica, deci au GND-ul comun, in rest fiecare avand cate un pin ce trebuie conectat la un pin digital(0-13) de pe placuta de dezvoltare. B5, la randul sau, are 2 pini: unul conectat la GND, altul la un pin digital.
  • Bineinteles, vom conecta pinii de 5V si GND de pe placuta cu cate un rand din mini breadboard.

Dovada functionare

  • Dupa conectarea componentelor conform cu ce am mentionat anterior, pentru verificarea functionalitatii am ales sa afisez pe display ceva la intamplare, considerand ca orice e diferit de un ecran alb (cum afisa display-ul fara sa fi rulat vreun cod pentru el) este o justificare valida a functionarii.

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

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

Export to PDF

pm/prj2025/avaduva/darius.ignatescu.1747560646.txt.gz · Last modified: 2025/05/18 12:30 by darius.ignatescu
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