Wordle
Introducere
Prezentarea proiectului:
Ce face? Proiectul simulează jocul Wordle, în care trebuie să ghicești un cuvânt de 5 litere în maximum 6 încercări.
Care este scopul lui? Implementarea fizică a jocului Wordle cu ajutorul unei plăci Arduino, oferind o experiență interactivă, fără a depinde de un ecran de calculator.
Care a fost ideea de la care am pornit? Am dorit să transform un joc popular online într-o versiune fizică, folosind un ecran LCD pentru interfață și o tastatură PS/2 pentru introducerea cuvintelor.
De ce este util? Proiectul oferă o modalitate educativă de a învăța noțiuni de programare embedded, lucrul cu periferice și interacțiunea cu hardware-ul prin intermediul Arduino.
Descriere generală
Următoarea diagramă bloc prezintă interacțiunea componentelor hardware principale:
Proiectul este compus din următoarele module:
Modul de afișare – un ecran LCD ILI9341 conectat prin SPI la Arduino, care redă interfața grafică Wordle (grilă, litere, feedback vizual).
Modul de introducere a datelor – o tastatură PS/2 modificată (cu cablu tăiat), folosită pentru a introduce caracterele în joc.
Unitatea de procesare – o placă Arduino UNO care gestionează logica jocului, comunicarea cu tastatura și actualizarea display-ului.
Translator de Nivel Bidirectional cu 4 Canale
Fluxul de interacțiune este următorul:
Utilizatorul introduce literele cu ajutorul tastaturii.
Arduino primește caracterele, verifică dacă forma un cuvânt valid și oferă feedback pentru fiecare literă.
Ecranul LCD afișează rezultatul (cu verde, galben sau gri), exact ca în varianta digitală.
Hardware Design
Listă de componente:
1 x Arduino UNO
1 x ecran TFT ILI9341 (cu SPI)
1 x tastatură PS/2 (cu cablu tăiat)
fire de conexiune
breadboard
Conectare LCD ILI9341:
GND ↔ GND
VCC ↔ 3.3V
CLK ↔ Digital 13
MOSI ↔ Digital 11
RES ↔ Digital 8
DC ↔ Digital 9
CS1 ↔ Digital 10
Conectare tastatură PS/2:
Schema electrică:
Software Design
Proiectul Wordle este implementat în limbajul C++ (Arduino), folosind o arhitectură modulară. Codul controlează un ecran TFT SPI și o tastatură PS/2, fără bibliotecă externă pentru protocolul tastaturii – acesta fiind implementat manual prin ISR (interrupții).
Mediu de dezvoltare
Platformă: Arduino UNO
IDE: Arduino IDE
Librării utilizate:
SPI.h
– comunicație cu display-ul
Adafruit_GFX.h
– funcții grafice de bază
Adafruit_ILI9341.h
– driver pentru display TFT
Protocol PS/2 (implementat manual)
Tastatura este citită bit cu bit folosind o rutină de întrerupere (ISR) care preia fiecare bit la căderea frontului pe linia de ceas PS/2:
void ps2_clk_isr()
– ISR care reconstruiește scancode-ul
decodeScancode()
– transformă scancode-ul în caracter ASCII
ps2ReadKey()
– returnează caracterul valid apăsat
Comunicarea se face pe pini digitali: DATA → D4, CLK → D3.
Structură logică
Meniul principal
FuncțiadrawMenu() afișează titlul și opțiunile „Rules” și „Play”.
Se navighează cu tastele săgeată sus/jos și se selectează cu Enter.
Selectarea „Rules” afișează regulile jocului prin showRulesPopup()</code>.
Afișare reguli
Desfășurarea jocului
startWordleGame() conține bucla principală de joc.
Se citesc caractere de la tastatură și se afișează literele introduse.
La fiecare apăsare pe Enter, programul compară literele introduse cu cuvântul secret.
Algoritm de feedback (colorare pătrățele)
Verde – litera este corectă și pe poziția corectă.
Galben – litera este corectă, dar pe altă poziție.
Gri – litera nu se regăsește în cuvânt.
Stări de joc
Dacă cuvântul este ghicit → afișează „You Win!”
Dacă s-au făcut 6 încercări fără succes → afișează „You Lose!”
Se revine în meniu cu tasta ESC
Funcții principale
resetGame()
– alege un cuvânt aleator, resetează grila și variabilele
drawMenu()
– desenează interfața meniului principal
showRulesPopup()
– afișează regulile jocului
startWordleGame()
– gestionează logica de joc
showPopup()
– afișează mesajele de final (win/lose)
-
-
ps2ReadKey()
– comunicare tastatură
Algoritmi și structuri de date
Liste de cuvinte în vectori de const char*
Indexare și randomizare pentru alegerea cuvântului țintă
strchr() și strcmp() pentru compararea literelor
Rezultate Obţinute
Care au fost rezultatele obţinute în urma realizării proiectului vostru.
Interfața grafică a fost implementată cu succes pe ecranul TFT.
Tastatura PS/2 a fost integrată funcțional, oferind input real pentru jucător.
Feedback-ul vizual este afișat corect conform regulilor Wordle.
Proiectul este complet autonom și nu necesită conexiune la PC în timpul jocului.
Concluzii
Proiectul Wordle fizic demonstrează că un joc simplu din mediul online poate fi adaptat într-un sistem embedded educativ. A fost o experiență practică în lucrul cu protocoale de comunicație, interacțiunea cu periferice și organizarea unui sistem cu feedback vizual și tastare fizică.
Download
Jurnal
Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.
* Săptămâna 1: documentare și alegerea proiectului
* Săptămâna 2: testarea tastaturii și a ecranului
* Săptămâna 3: desenarea meniului și integrarea logica jocului
* Săptămâna 4: testare și corectare feedback vizual
* Săptămâna 5: documentare finală și redactare wiki
Bibliografie/Resurse