Bull’s eye

Date de contact: Monica-Alexandra Petcu

Introducere

Proiectul constă în realizarea unui joc de tip tir cu arma digitalizat, care are la bază un pistol de jucărie și 2 ținte.

Pasiunea mea pentru astfel de activități a avut un rol decisiv în hotărârea temei proiectului.

În urma finalizării acestui joc mă aștept să acumulez multe cunoștințe ce îmi vor fi de folos în viitoarele proiecte individuale pe care le voi mai avea.

Descriere generala

Jocul se bazează pe un pistol de jucărie ce va emite o undă de lumină, aceasta fiind îndreptată spre ținte. Fiecare țintă va fi legată de un servomotor, iar în mijloc va avea un fotorezistor pentru a detecta unda de lumină venită de la pistol. În momentul în care unda de lumină este detectată, ținta va fi doborâtă, iar pe ecranul LCD va fi incrementat un număr ce reprezintă de câte ori a lovit jucătorul una dintre ținte.

Hardware Design

Componente
Placă de bază ATmega324A
Servomotoare
LCD
Diodă laser
Rezistențe
Condensatoare
Butoane
Fire de legătură
Fotorezistori

Software Design

Proiectul este format din două componente:

  1. Laser gun (Pistolul cu laser)
  • Acesta este format dintr-un pistol de jucărie pe care am lipit o bandă de leduri RGB (Neopixels) WS2812B, un buton care are ca scop reîncărcarea cartușului și am lipit direct un buton de trigger.
  • Pentru banda de leduri RGB m-am folosit de funcțiile din biblioteca light_ws2812.
  • Butoanele și dioda laser sunt conectate la plăcuță, fiecare la câte un input.

> Pini pentru butoane/led:

triggerul - PA0
buton reîncărcare - PA1
dioda laser - PD5
  • Am definit câte un led pentru fiecare culoare:
   led[0].r=0;led[0].g=16;led[0].b=0;	//green
   led[1].r=16;led[1].g=0;led[1].b=0;	//red
   led[2].r=11;led[2].g=16;led[2].b=0;	//yellow
   led[3].r=0;led[3].g=0;led[3].b=0;	//black
  • În funcție de numărul de gloanțe pe care îl am, trebuie să setez fiecare led în parte cu culoarea potrivită. Când cartușul este aproape plin ledurile aprinse sunt verzi, când cartușul e pe la jumătate ledurile aprinse sunt galbene, iar când cartușul este pe terminate ledurile sunt de culoare roșie.

- Targets (Ținte)

  • Acestea au la bază două servomotoare conectate la PD5 (servo1) și PD4 (servo2).
  • Am descoperit că starea de UP a țintei are valoarea 200, iar starea de DOWN are valoarea 400.
  • Mă folosesc de Timer1:
   TCCR1A|=(1<<COM1A1)|(1<<COM1B1)|(1<<WGM11);        //NON Inverted PWM
   TCCR1B|=(1<<WGM13)|(1<<WGM12)|(1<<CS11)|(1<<CS10); //FAST PWM

   ICR1=4999;  //fPWM=50Hz (Period = 20ms Standard).
  • Am creat o funcție pentru a ridica la întâmplare una dintre cele două ținte:
void shuffleTarg() {
	int target = rand();
	if (target % 2 == 0) {
		// servo1 sus
		OCR1A = SERVO1_UP;
	} else {
		// servo2 sus
		OCR1B = SERVO2_UP;
	}
}
  • În funcția principală m-am hotărât să creez grade de dificultate pentru cineva ce încearcă să nimerească țintele cu laserul. Astfel, de 20 de ori viteza servourilor este relativ mică, apoi de următoarele 20 de ori se mărește puțin viteza, ultimele 20 de ori fiind foarte rapide. Acest lucru ajută la dezvoltarea reflexelor celui ce va trage cu arma laser spre ținte. :-D

Am vrut să adaug și un ecran LCD, dar l-am ars din greșeală m( De asemenea, fotorezistorii nu îmi detectau lumina laser ci doar pe cea din cameră, chiar dacă am încercat să citesc prima dată lumina din cameră și să fac diferența între valoarea ce o primește fotorezistența și cea salvată ca fiind lumina camerei și să o compar cu o toleranță.

Rezultate Obţinute

Am programat un pistol laser cu cartuș format din leduri RGB în număr de 14, laserul aprinzându-se la fiecare apăsare de trigger, gloanțele scăzându-se din numărul de leduri aprinse. În momentul în care nu mai sunt gloanțe (toate ledurile sunt stinse), nu se mai aprinde laserul la apăsarea triggerului. Pentru a reîncărca arma există un buton pe partea laterală, mai jos de leduri, care reaprinde ledurile și resetează numărul de gloanțe la 14.

Concluzii

A fost un proiect la care am lucrat cu plăcere și mulțumită căruia am învățat să pun în practică multe noțiuni teoretice predate la această materie.

Jurnal

Data Activitatea
18-04-2019 Am lipit componentele de bază pe placă
21-04-2019 Am făcut o listă cu componente ce am crezut că o să îmi trebuiască + prima comandă
25-04-2019 Am făcut a doua comandă de componente
05-05-2019 Am desenat schema electrică
11-05-2019 Am lipit piesele pe pistol
17-05-2019 Am făcut a treia comandă de componente
22-05-2019 Am scris codul pentru pistol
23-05-2019 Am scris codul pentru ținte + lipit ținte și pictat cutia

Bibliografie/Resurse

pm/prj2019/imatesica/pma_gun.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