This is an old revision of the document!
Dino game simulator
Introducere
Dino game simulator este un simulator de joc pentru “Dino Chrome game” facut cu ajutorul placutei Arduino UNO. Scopul acestui proiect este de a obtine scor cat mai mare la acest joc, lucru greu de obtinut fara o sincronizare si atentie desavarsita, obtinuta cu usurinta insa de un robot simulator. Proiectul este util deoarece ofera o perspectiva legat de cum functioneaza fotorezistentele, servomotoarele, intreruperile si multe altele intr-un mod interactiv si practic.
Descriere generală
Acest simulator are urmatoarele functionalitati:
1. un afisaj de leduri care identifica daca luminozitatea ecranului este cea optima
2. un buton de start si de reset pentru joc
3. afisaj pe ecran legat de timpul in secunde de cand simulatorul a pornit, scorul calculat pana in momentul respectiv si numarul de miscari pe care le-a executat pana in momentul respectiv.
4. in rest simulatorul va detecta cand trebuie sarit/aplecat atunci cand intaleste un obstacol si va actiona servomotorul in directia care trebuie astfel incat sa execute comanda de UP ARROW/DOWN ARROW.
Hardware Design
Lista de piese:
Software Design
Descrierea codului aplicatiei (firmware): * Mediu de dezvoltare: Proiectul este dezvoltat in Arduino IDE. * Librarii si surse 3rd-party: * Servo.h: Pentru controlul precis al servomotorului. * LiquidCrystal.h: Pentru gestionarea afisajului LCD 16×2. * Algoritmi si structuri implementate: * Monitorizarea luminozitatii: Doua fotorezistoare (LDR-uri) detecteaza obstacolele pe ecran, comparand valorile cu praguri predefinite pentru decizii de saritura/aplecare. * Masina de stari (State Machine): Controleaza miscarile servomotorului non-blocant, cu stari precum IDLE, WAITING_TO_MOVE_UP/DOWN (cu delay de sincronizare) si MOVING_UP/DOWN. * Intreruperi ADC: Asigura citirea rapida si eficienta a valorilor de la LDR-uri; o intrerupere la finalizarea unei conversii initiaza imediat urmatoarea pe celalalt LDR. * Buton de Reset: Permite repornirea jocului si resetarea contoarelor, incluzand debounce. * Modul de Pauza: Simulatorul intra in pauza la inactivitate prelungita, asteptand resetarea manuala. * Surse si functii implementate: * Functii de initializare (setup()). * Bucla de executie principala (loop()) continand logica jocului. * Functii dedicate pentru configurarea si gestionarea intreruperilor ADC (e.g., setupADCInterrupt(), startADCConversion()). * Rutina de serviciu a intreruperii ADC (ISR(ADC_vect)) pentru procesarea datelor senzorilor. * Afisaj pe LCD al timpului de joc, numarului de sarituri si aplecari. * LED-uri pentru feedback vizual al luminozitatii LDR1.
Rezultate Obţinute
Am scos scor mai mare decat am putut eu scoate in oricare din dati :D
Concluzii
Download
Jurnal
Bibliografie/Resurse