This is an old revision of the document!


Joc numeric

Introducere

Jocul presupune răspunderea, folosind o tastatură, la întrebările afișate pe un LCD. (ex: 2x + 1 = 3, se va răspunde 1)

De asemenea, vor fi disponibile mai multe niveluri de dificultate și un meniu din care se poate selecta modul de joc.

Descriere generală

Schemă bloc

În funcție de butonul pe care îl va apăsa (pe Keyboard 4×4), utilizatorul va avea posibilitatea să înceapă jocul, să aleagă un mod de joc și să răspundă la întrebări. În funcție de răspunsurile oferite (logică redată în Cod) se vor acționa Buzzer-ul și LED-ul. De asemenea, se va modifica textul afișat pe LCD.

Hardware Design

Piese
  • plăcuță Arduino Uno R3
  • LCD 16×2
  • Keypad 4×4
  • Potențiometru
  • Buzzer
  • LED(uri)
  • Rezistențe
Componenta Cantitate
Arduino Uno R3 1
LCD 16×2 1
Keypad 4×4 1
Rezistențe (1kΩ) 6
Potențiometru (10kΩ) 1
Buzzer 1
LED 4
Schema electrică

Software Design

Ca mediu de dezvoltare am folosit atât Tinkercad, cât și aplicația de bază oferită de Arduino pentru dezvoltarea în timp real a proiectului.

Biblioteci

Am folosit biblioteca necesară pentru EEPROM, cât și LiquidCrystal.h pentru utilizarea LCD-ului.

Ideea de bază a jocului constă în parcurgerea unor întrebări din trei seturi, ordonate după gradul de dificultate (ușoare, medii, grele) și atingerea unui anumit număr de răspunsuri corecte la rând pentru câștigarea jocului. În funcție de progresul utilizatorului sunt afișate diverse mesaje pe LCD, iar atunci când răspunde greșit la o întrebare, se reîncepe jocul, reținându-se scorul maxim în memoria EEPROM.

Rezultate Obţinute

Jocul permite alegerea unui mod corespunzător nivelului de dificultate (A - Ușor, B - Mediu, C - Dificil), alegerea fiind realizată pe baza keypad-ului.

Apoi, vor fi afișate întrebări pe LCD, începând de la nivelul de dificultate ales până la cel dificil.

De asemenea, la nivel software, am implementat și posibilitatea de a șterge caractere (backspace) pentru a modifica răspunsul.

în funcție de răspuns (greșit/corect) sau de butonul de pe keypad care este apăsat, se aud diverse sunete de la buzzer, iar pentru fiecare întrebare răspunsă corect, LED-ul se va lumina.

Concluzii

Proiectul s-a dovedit a fi foarte interesant, de la modul de afișare al mesajelor pe LCD, până la decodificarea butonului de pe keypad care a fost apăsat și sincronizarea cu LCD-ul, cât și utilizarea diferitelor funcționalități ale plăcuței (cum ar fi memoria EEPROM).

De asemenea, mi s-a părut interesant că am putut utiliza un pin analog ca digital[7].

Download

pm_arch_mihai_barbu_joc.zip

Arhiva conține atât codul realizat pentru funcționarea jocului, cât și diagramele generate în urma implementării.

Am adăugat un demo al proiectului aici.

Jurnal

  • 18/04/2022 - alegere proiect
  • 03/05/2022 - init_wiki()
  • 05-07/05/2022 - documentare piese + schemă
  • 12/05/2022 - [Joc] V0 - Keypad + LCD (Tinkercad)
  • 13/05/2022 - [Joc] ^ Adăugare LED
  • 17/05/2022 - [Joc] ^^ Adăugare Piezo
  • 25-27/05/2022 - [HW] Implementare pe Arduino
    • 25 - adăugare LCD (+ potențiometru)
    • 25-26 - adăugare keypad + asigurare funcționalitate
    • 27 - adăugare buzzer + LED

Bibliografie/Resurse

Software
Hardware
pm/prj2022/sionescu/joc_numeric.1653753752.txt.gz · Last modified: 2022/05/28 19:02 by mihai_eugen.barbu
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