This is an old revision of the document!
Nume: Millio Radu
Grupa: 333CA
Pentru acest proiect voi incerca sa construiesc un player fizic de Dino Runner, jocul de pe Chrome atunci cand nu merge internetul.
Un dinozaur alearga de la stanga la dreapta (stand pe loc relativ la ecran) si trebuie sa evite obstacole (cactusi) apasand pe space pentru a sari peste ei.
Senzorul se lipeste cu scotch pe ecran, servomotorul se lipeste cu scotch langa tasta space. Senzorul trebuie sa fie suficient de sensibil incat sa detecteze lumina neagra a cactusilor de pe ecran. Se apasa butonul start/stop pentru inceperea jocului. La detectarea unui cactus trebuie folosit un debouncer, iar servomotorul se va roti suficient cat sa apese tasta space pentru ca dinozaurul sa sare peste cactus.
Lista componente:
Componenta | Cantitatea |
---|---|
Placa compatibila Arduino Uno R3 ATmega328P | 1 |
Fotorezistor | 1 |
Suport conic pentru senzor | 1 |
Servomotor | 1 |
Buton | 1 |
Condensator 100n | 1 |
Rezistori 10k | 2 |
Jumpers | 10 |
Breadboard | 1 |
Schema electrica:
Implementare
Diagrama de activitate
Descrierea codului
Pentru editarea codului am folosit Arduino IDE. Logica de functionare este urmatoarea: Variabila GameState este controlata de butonul care face toggle pe aceasta valoare (STOP/PLAY). In modul STOP, senzorul este calibrat, adica ultima valoare produsa de acesta este salvata drept referinta de baza pentru modul de joc. Cand se apasa iar pe buton intram in modul PLAY. Se compara in loop valoarea oferita de senzor cu valoarea de referinta. Daca diferenta dintre acestea este mai mare decat un threshold atunci servomotorul este actionat.
Pentru functionarea butonului am creat o intrerupere INT0 cu activare pe falling edge. Pentru debouncing am folosit un condensator de 100n.