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 aplicaţiei (firmware):
Mediu de dezvoltare: Proiectul este dezvoltat în Arduino IDE.
Librării şi surse 3rd-party:
Algoritmi şi structuri implementate:
Monitorizarea luminozității: Două fotorezistoare (LDR-uri) detectează obstacolele pe ecran, comparând valorile cu praguri predefinite pentru decizii de săritură/aplecare.
Mașină de stări (State Machine): Controlează mișcările servomotorului non-blocant, cu stări precum IDLE
, WAITING_TO_MOVE_UP/DOWN
(cu delay de sincronizare) și MOVING_UP/DOWN
.
Întreruperi ADC: Asigură citirea rapidă și eficientă a valorilor de la LDR-uri; o întrerupere la finalizarea unei conversii inițiază imediat următoarea pe celălalt LDR.
Buton de Reset: Permite repornirea jocului și resetarea contoarelor, incluzând debounce.
Modul de Pauză: Simulatorul intră în pauză la inactivitate prelungită, așteptând resetarea manuală.
Surse şi funcţii implementate:
Funcții de inițializare (setup()).
Bucle de execuție principală (loop()) conținând logica jocului.
Funcții dedicate pentru configurarea și gestionarea întreruperilor ADC (e.g., setupADCInterrupt()
, startADCConversion()
).
Rutina de serviciu a întreruperii ADC (ISR(ADC_vect)
) pentru procesarea datelor senzorilor.
Afișaj pe LCD al timpului de joc, numărului de sărituri și aplecări.
LED-uri pentru feedback vizual al luminozității LDR1.
Rezultate Obţinute
Am scos scor mai mare decat am putut eu scoate in oricare din dati :D
Concluzii
Bibliografie/Resurse
Prezentul proiect “Dino Game Simulator” a fost dezvoltat utilizand o varietate de resurse tehnice si educationale, grupate mai jos.
=== Resurse Hardware ===
Arduino UNO (ATmega328P)
:
Servomotor Micro 180 grade
:
Fotorezistoare (LDRs)
:
Display LCD 16×2 (HD44780)
:
=== Resurse Software ===