1. ro
  2. en
20 septembrie 2025

Minte Sprintenă – Adunare Viteză

Joc interactiv cu Arduino pentru minți agere

 

Minte Sprintenă – Adunare Viteză este un joc educațional interactiv dezvoltat pe platforma Arduino Uno, conceput pentru a stimula gândirea rapidă, reacțiile logice și capacitatea de calcul mental. Printr-o combinație atent gândită de afișaj grafic, LED-uri colorate, difuzor și patru butoane de răspuns, jocul oferă o experiență captivantă, ideală pentru activități STEM, concursuri școlare sau învățare individuală.

 

Jucătorul este provocat să răspundă la o serie de întrebări de adunare, fiecare cu patru variante afișate pe ecran. Răspunsul se selectează prin apăsarea unui buton colorat, iar sistemul reacționează imediat, oferind feedback vizual și sonor. În cazul unui răspuns corect, se aprinde LED-ul verde, afișajul se colorează într-un verde intens, iar difuzorul emite un ton scurt și plăcut care confirmă succesul. Dacă răspunsul este greșit, se aprinde LED-ul roșu, ecranul se face roșu, iar difuzorul emite un sunet distinctiv de eroare, semnalând eșecul. Acest sistem de reacție instantanee transformă învățarea într-un proces activ, memorabil și motivant.

 

 

Structura jocului și nivelurile de dificultate

 

Jocul este alcătuit din 45 de niveluri, fiecare cu dificultate progresivă. Pe măsură ce jucătorul avansează, întrebările devin mai complexe, menținând ritmul alert și provocarea constantă. Primele niveluri conțin adunări simple între două numere de o cifră, iar ultimele includ combinații între numere de două și trei cifre, solicitând atât rapiditate, cât și precizie.

 

Structura nivelurilor este următoarea:

  • Nivelurile 1–10: 1 cifră + 1 cifră

  • Nivelurile 11–20: 1 cifră + 2 cifre

  • Nivelurile 21–30: 1 cifră + 3 cifre

  • Nivelurile 31–40: 2 cifre + 2 cifre

  • Nivelurile 41–45: 2 cifre + 3 cifre

 

Pentru fiecare întrebare, jucătorul are la dispoziție un timp limitat pentru a răspunde: 6 secunde pentru primele 30 de niveluri și 10 secunde pentru ultimele 15. Dacă timpul expiră fără ca vreun buton să fie apăsat sistemul reacționează ca în cazul unui răspuns incorect — LED roșu, ecran roșu și sunet de eroare.

 

Evaluare, scor și departajare

 

La finalul jocului, sistemul afișează scorul total, calculat în funcție de numărul de răspunsuri corecte din cele 45 de întrebări. Scorul este exprimat atât numeric, cât și procentual, oferind o imagine clară asupra performanței jucătorului. În plus, se afișează și timpul total în care au fost parcurse toate nivelurile, măsurat în secunde.

 

Această funcție de cronometrare permite departajarea jucătorilor în cadrul unui concurs. Dacă doi participanți obțin același scor, cel care a finalizat provocarea într-un timp mai scurt este declarat câștigător. Astfel, jocul nu testează doar acuratetețea răspunsurilor oferite, ci și viteza de gândire, oferind un cadru competitiv echitabil și motivant.

 

 

 

Schema electrică

 

La prima vedere, schema electrică poate părea complexă, iar liniile sale par că se încurcă într-o poveste tehnică fără sfârșit. Fire care se intersectează, simboluri necunoscute și conexiuni care par să nu aibă sens — toate pot intimida. Dar nu lăsa aparențele să te descurajeze. Vom parcurge împreună fiecare etapă, pas cu pas, interpretând schema, descoperind logica din spatele fiecărui simbol și așezând componentele pe breadboard într-un mod clar și intuitiv. Vei vedea cât de repede se transformă confuzia în curiozitate și încredere.

 

Fiecare fir are un rol, fiecare rezistor are o funcție, iar fiecare LED spune o poveste — fie de succes, fie de eroare. Schema nu este doar un desen tehnic, ci o hartă a interacțiunii dintre gândirea logică și creativitatea inginerească.

 

Un exemplu clar al alegerii inspirate este afișajul ST7789. L-am selectat nu doar pentru compatibilitatea sa cu Arduino, ci și pentru că este una dintre cele mai accesibile opțiuni disponibile, oferind o diagonală generoasă de 2.4 inch. Într-un joc educațional cu patru variante de răspuns, afișate simultan, un ecran mai mic ar fi limitat grav lizibilitatea și claritatea interfeței. ST7789 ne-a permis să prezentăm întrebările și opțiunile într-un mod vizual clar, fără compromisuri, păstrând totodată costurile reduse — un echilibru ideal pentru proiecte educaționale.

 

În plus, am integrat divizoare de tensiune pentru semnalele SPI, protejând afișajul de nivelul logic de 5V al Arduino-ului. LED-urile sunt conectate prin rezistențe de limitare de 220Ω, iar difuzorul și butoanele sunt poziționate intuitiv pentru a oferi un feedback imediat, atât vizual cât și sonor. Fiecare componentă are locul ei bine definit, iar schema reflectă o gândire modulară, ușor de extins și adaptat.

 

Așadar, dacă la început totul pare un labirint, vei descoperi curând că schema este de fapt o poveste logică, coerentă, care așteaptă să fie înțeleasă. Iar tu, cu puțină răbdare și curiozitate, vei deveni autorul ei.

 

 

După cum puteți observa, avem următoarele conexiuni electrice între componentele circuitului nostru:

 

Butoane pentru răspunsul utilizatorului 

  • Terminalul 1 al butonului roșu → Pin D2 Arduino

  • Terminalul 2 al butonului roșu → GND Arduino

  • Terminalul 1 al butonului galben → Pin D3 Arduino

  • Terminalul 2 al butonului galben → GND Arduino

  • Terminalul 1 al butonului verde → Pin D4 Arduino

  • Terminalul 2 al butonului verde → GND Arduino

  • Terminalul 1 al butonului albastru → Pin D5 Arduino

  • Terminalul 2 al butonului albastru → GND Arduino

 

LED-uri pentru feedback vizual

  • Terminalul anod (+) al LED-ului verde → Terminal 1 rezistor R1 (220Ω)

  • Terminal 2 rezistor R1 (220Ω) → Pin D6 Arduino

  • Terminalul catod (−) al LED-ului verde → GND Arduino

  • Terminalul anod (+) al LED-ului roșu→ Terminal 1 rezistor R2 (220Ω)

  • Terminal 2 rezistor R2 (220Ω) → Pin D7 Arduino

  • Terminalul catod (−) al LED-ului roșu → GND Arduino

 

Difuzor

  • Terminalul pozitiv (+) al difuzorului → Pin A0 Arduino

  • Terminalul negativ (−) al difuzorului → GND Arduino

 

Afișaj ST7789 (SPI, 240x320pixeli) și divizoarele de tensiune

  • Pinul GND al afișajului → Pin GND Arduino

  • Pinul VCC al afișajului → Pin 5V Arduino

  • Pinul CS al afișajului → Terminal comun rezistor R5 (820Ω) si R6 (1,5kΩ)

  • Terminal 2 rezistor R5 (820Ω) → Pin D10 Arduino

  • Terminal 2 rezistor R6 (1,5kΩ) → Pin GND Arduino

  • Pinul RESET al afișajului → Terminal comun rezistor R4 (820Ω) si R3 (1,5kΩ)

  • Terminal 2 rezistor R4 (820Ω) → Pin D9 Arduino

  • Terminal 2 rezistor R3 (1,5kΩ) → Pin GND Arduino

  • Pinul D/C al afișajului → Terminal comun rezistor R8 (820Ω) si R7 (1,5kΩ)

  • Terminal 2 rezistor R8 (820Ω) → Pin D8 Arduino

  • Terminal 2 rezistor R7 (1,5kΩ) → Pin GND Arduino

  • Pinul SDI (MOSI) al afișajului → Terminal comun rezistor R10 (820Ω) si R9 (1,5kΩ)

  • Terminal 2 rezistor R10 (820Ω) → Pin D11 Arduino

  • Terminal 2 rezistor R9 (1,5kΩ) → Pin GND Arduino

  • Pinul SCK al afișajului → Terminal comun rezistor R12 (820Ω) si R11 (1,5kΩ)

  • Terminal 2 rezistor R10 (820Ω) → Pin D13 Arduino

  • Terminal 2 rezistor R9 (1,5kΩ) → Pin GND Arduino

  • Pinul LED al afișajului → Terminal 1 rezistor R13 (220Ω)

  • Terminal 1 rezistor R13 (220Ω) → Pin 5V Arduino

 

Conversia semnalelor logice

 

Dacă aveți la îndemână un adaptor de semnal logic, de tip level shifter, puteți utiliza o soluție mai robustă și mai precisă decât divizoarele pasive de tensiune. Aceste module sunt concepute special pentru a converti semnale digitale între două niveluri de tensiune — în cazul nostru, de la 5V (Arduino Uno) la 3.3V (afișaj ST7789) — fără pierderi de viteză sau probleme de compatibilitate.

 

Level shifter-ul activ este ideal mai ales în aplicații unde semnalele sunt rapide, cum ar fi SPI, I2C sau UART, și unde stabilitatea logică este esențială. În proiectul nostru, folosirea unui astfel de adaptor pentru liniile SCL (SCK) și SDA (MOSI) asigură o comunicare fiabilă cu afișajul ST7789, protejându-l de supratensiuni și eliminând riscul de deteriorare pe termen lung.

 

După cum puteți observa, avem următoarele conexiuni electrice între componentele circuitului nostru:

 

Butoane pentru răspunsul utilizatorului 

  • Terminalul 1 al butonului roșu → Pin D2 Arduino

  • Terminalul 2 al butonului roșu → GND Arduino

  • Terminalul 1 al butonului galben → Pin D3 Arduino

  • Terminalul 2 al butonului galben → GND Arduino

  • Terminalul 1 al butonului verde → Pin D4 Arduino

  • Terminalul 2 al butonului verde → GND Arduino

  • Terminalul 1 al butonului albastru → Pin D5 Arduino

  • Terminalul 2 al butonului albastru → GND Arduino

 

LED-uri pentru feedback vizual

  • Terminalul anod (+) al LED-ului verde → Terminal 1 rezistor R1 (220Ω)

  • Terminal 2 rezistor R1 (220Ω) → Pin D6 Arduino

  • Terminalul catod (−) al LED-ului verde → GND Arduino

  • Terminalul anod (+) al LED-ului roșu→ Terminal 1 rezistor R2 (220Ω)

  • Terminal 2 rezistor R2 (220Ω) → Pin D7 Arduino

  • Terminalul catod (−) al LED-ului roșu → GND Arduino

 

Difuzor

  • Terminalul pozitiv (+) al difuzorului → Pin A0 Arduino

  • Terminalul negativ (−) al difuzorului → GND Arduino

 

Afișaj ST7789 (SPI, 240x320pixeli) și level shifter

  • Pinul GND al afișajului → Pin GND Arduino

  • Pinul VCC al afișajului → Pin 5V Arduino

  • Pinul HV (high voltage) al level shifter → Pin 5V Arduino

  • Pinul LV (low voltage) al level shifter → Pin 3V3 Arduino

  • Pinul GND1 al level shifter → Pin GND Arduino (care este comun, prin conexiunile anterioare, cu GND afișaj)

  • Pinul GND2 al level shifter → Pin GND Arduino (care este comun, prin conexiunile anterioare, cu GND afișaj)

  • Pinul CS al afișajului → Terminal LV5 al level shifter

  • Terminal HV5 al level shifter→ Pin D10 Arduino

  • Pinul RESET al afișajului → Terminal LV4 al level shifter

  • Terminal HV4 al level shifter → Pin D9 Arduino

  • Pinul D/C al afișajului → Terminal LV3 al level shifter

  • Terminal HV3 al level shifter→ Pin D8 Arduino

  • Pinul SDI (MOSI) al afișajului → Terminal LV2 al level shifter

  • Terminal HV2 al level shifter → Pin D11 Arduino

  • Pinul SCK al afișajului → Terminal LV1 al level shifter

  • Terminal HV1 al level shifter → Pin D13 Arduino

  • Pinul LED al afișajului → Terminal 1 rezistor R13 (220Ω)

  • Terminal 1 rezistor R13 (220Ω) → Pin 5V Arduino

 

 

Materiale necesare:

 

  • Arduino Uno sau un model echivalent al acestuia

  • 4 întrerupătoare cu revenire, normal deschise, care pot fi instalate pe breadboard  

  • 2 LED-uri, de preferat de 5mm, care să emită lumină de culori diferite – roșu și verde

  • un afișaj TFT, 2.4 inch, 320x240 pixeli, cu interfață SPI, controlat  de circuitul integrat ST7789 (dacă afișajul are cablaj roșu, este aproape sigur controlat de ST7789; dacă afișajul are cablajul albastru sau verde, este mai probabil să fie controlat de ILI9341 sau alt model compatibil)

  • 3 rezistoare de 220Ω (roșu-roșu-maro-auriu)

 

  • 5 perechi de rezistoare de 820Ω (gri-roșu-maro-auriu) și 1,5kΩ (maro-verde-roșu-auriu)

  • alternativ, dacă nu doriți să utilizați divizoarele rezistive de tensiune, le puteți înlocui, așa cum am prezentat în schema anterioară, cu un convertor de semnal logic (level shifter), cu 8 canale

 

  • un difuzor 

  • un breadboard de dimensiune mare

  • fire de legătură

 

 

 

Instalarea componentelor pe breadboard 

 

 

După cum observați, de data aceasta avem de realizat destul de multe conexiuni și este foarte important să fiți atenți la toate detaliile pentru a realiza corect montajul. Iată câteva aspecte de luat în considerare:

 

  • LED-urile au polaritate și trebuie conectate în direcția corectă. Am notat cu A – anod (plus) și K – catod (minus) pentru a vă ghida mai ușor. Dacă sunt montate invers, nu vor lumina.

 

  • Întrerupătoarele au patru pini dispuși într-un dreptunghi, nu într-un pătrat perfect. Acest lucru înseamnă că, fără a forța, ele se vor potrivi natural într-o singură direcție pe breadboard.

  • Rezistoarele nu au polaritate, deci pot fi instalate în orice sens, fără restricții. Rolul lor este să limiteze curentul și să protejeze componentele, în special LED-urile.

  • Difuzorul poate avea fire colorate. Dacă nu este marcat, rețineți că firul roșu indică polul pozitiv și trebuie conectat la pinul A0, iar firul negru la GND (masa).

  • În zona de alimentare a breadboardului, pinii laterali sunt conectați grupat câte 25. Pentru a asigura continuitatea tensiunii, este necesară interconectarea între cele două sectoare — adică alimentarea trebuie să fie comună pe toată lungimea plăcii. Veți face acest lucru atât în partea de sus a breadboardului cât și în partea de jos.

  • Dacă utilizați pentru prima dată placa Arduino, atunci puteți realiza conexiunile fără griji. În acest caz, placa este liberă de orice program anterior, astfel că nu există riscul unor execuții necontrolate.

 

 

Notă importantă despre aranjarea componentelor pe breadboard

Asemenea matematicii, unde o problemă poate fi rezolvată prin mai multe metode corecte, și în electronică există mai multe moduri de a aranja componentele pe breadboard — atât timp cât se respectă schema electrică. Din acest motiv, este posibil ca modul în care am instalat componentele în demonstrația video să difere ușor față de versiunea prezentată pe site.

 

Principalul motiv este legat de faptul că simulările și desenele sunt realizate în două dimensiuni și, uneori, o poziționare diferită a componentelor poate face ca o conexiune să pară incorectă sau greu de urmărit. De aceea, în desenele explicative încerc să evidențiez cât mai clar traseul conexiunilor, astfel încât să înțelegeți cu ușurință cum trebuie realizat circuitul în practică.

 

Scopul meu este să vă ofer o imagine cât mai clară și intuitivă, care să vă ajute să evitați greșelile de montaj și să înțelegeți logica din spatele fiecărei conexiuni, acesta fiind și motivul pentru care, uneori, vă scriu același lucru de mai multe ori.

 

Vă prezint și o propunere de aranjare a componentelor pe breadboard atunci când folosim un convertor de semnale logice (de la 5V la 3.3V). Scopul este să vă ofer o variantă practică, clară și ușor de urmărit, astfel încât să puteți alege configurația care vi se pare mai simplă și mai intuitivă.

 

 

Codul sursă

 

Pentru ca proiectul să funcționeze corect, este necesar să instalăm câteva biblioteci esențiale în Arduino IDE. Acestea oferă suportul grafic, comunicația SPI și funcțiile de desen necesare afișajului ST7789, precum și o structură modulară care simplifică dezvoltarea jocului.

 

Începem cu biblioteca Adafruit ST7735 and ST7789 by Adafruit, care conține clasele dedicate controlerelor grafice ST77xx. Deși numele include și ST7735, biblioteca este perfect compatibilă cu ST7789, deoarece cele două afișaje împărtășesc aceeași interfață SPI și set de comenzi. Această bibliotecă permite inițializarea ecranului, setarea rezoluției, rotirea afișajului și trimiterea de date grafice.

 

Pentru ca funcțiile de desenare — cum ar fi afișarea textului, desenarea liniilor, cercurilor sau formelor — să fie disponibile, trebuie instalată și biblioteca Adafruit GFX by Adafruit,. Aceasta este responsabilă pentru toate operațiile grafice de nivel înalt și este utilizată de majoritatea afișajelor Adafruit.

 

În plus, biblioteca Adafruit BusIO by Adafruit, este o componentă de suport necesară pentru funcționarea corectă a GFX și ST7789. Ea gestionează comunicațiile SPI și I2C într-un mod abstractizat, oferind stabilitate și compatibilitate extinsă cu diverse microcontrolere.

 

Pentru a instala aceste biblioteci, deschidem Arduino IDE și accesăm Sketch → Include Library → Manage Libraries. Căutăm „Adafruit ST7735 and ST7789” și, foarte important, apasăm pe Install all. Această opțiune va instala automat și bibliotecile conexe — inclusiv Adafruit GFX și Adafruit BusIO — evitând erorile de compilare și asigurând funcționarea completă a afișajului.

 

 

În final, biblioteca SPI este inclusă implicit în Arduino IDE și nu necesită instalare separată. Ea permite comunicarea între Arduino și afișajul ST7789 prin protocolul SPI, fiind esențială pentru trimiterea datelor grafice. Prin instalarea acestor biblioteci, ne asigurăm că afișajul funcționează corect, că elementele grafice sunt afișate fluent și că logica jocului poate fi implementată fără întreruperi sau erori tehnice. Înainte de compilare va trebui să avem instalate toate cele trei biblioteci prezentate în imagine.

 

 

Dacă afișajul vostru este controlat de circuit integrat ILI9341...

 

Pentru ca proiectul să funcționeze corect cu afișajul ILI9341, este necesar să instalăm câteva biblioteci fundamentale în Arduino IDE. Acestea oferă suportul grafic, comunicația SPI și funcțiile de desen necesare pentru afișarea elementelor vizuale ale jocului, precum și o structură modulară care simplifică dezvoltarea și extinderea proiectului.

 

Începem cu biblioteca Adafruit ILI9341 by Adafruit, care conține clasele dedicate controlerului grafic ILI9341. Acest afișaj TFT de 2.4” sau 2.8” este extrem de popular în proiectele educaționale și oferă o interfață SPI rapidă și stabilă. Biblioteca permite inițializarea afișajului, setarea rezoluției, rotirea afișajului și transferul de date grafice, fiind compatibilă cu o gamă largă de microcontrolere, inclusiv Arduino Uno, Mega, Nano sau ESP32.

 

Pentru ca funcțiile de desenare — cum ar fi afișarea textului, desenarea liniilor, cercurilor sau formelor — să fie disponibile, trebuie instalată și biblioteca Adafruit GFX by Adafruit. Aceasta este responsabilă pentru toate operațiile grafice de nivel înalt și este utilizată de majoritatea afișajelor Adafruit. GFX oferă suport pentru fonturi personalizate, poziționarea textului, desenarea formelor geometrice și umplerea acestora cu culori, fiind esențială pentru orice interfață vizuală complexă.

 

În plus, biblioteca Adafruit BusIO by Adafruit este o componentă de suport necesară pentru funcționarea corectă a bibliotecilor GFX și ILI9341. Aceasta gestionează comunicațiile SPI și I2C într-un mod abstractizat, oferind stabilitate și compatibilitate extinsă cu diverse microcontrolere. Fără bibliotecă BusIO, pot apărea erori de compilare sau probleme de sincronizare în transmiterea datelor către afișaj.

 

Pentru a instala aceste biblioteci, deschidem Arduino IDE și accesăm meniul Sketch → Include Library → Manage Libraries. Căutăm „Adafruit ILI9341” și, foarte important, apăsăm pe Install all. Această opțiune va instala automat și bibliotecile conexe — inclusiv Adafruit GFX și Adafruit BusIO — evitând erorile de compilare și asigurând funcționarea completă a afișajului.

 

 

În final, biblioteca SPI este inclusă implicit în Arduino IDE și nu necesită instalare separată. Ea permite comunicarea între Arduino și afișajul ILI9341 prin protocolul SPI, fiind esențială pentru trimiterea datelor grafice și pentru funcționarea fluentă a interfeței vizuale.

Prin instalarea acestor biblioteci, ne asigurăm că afișajul funcționează corect, că elementele grafice sunt afișate fluent și că logica jocului poate fi implementată fără întreruperi sau erori tehnice. Este un pas esențial înainte de compilare, iar verificarea prezenței tuturor bibliotecilor instalate garantează o experiență stabilă și completă. Drept urmare, înainte de compilare va trebui să avem instalate cel puțin cele trei biblioteci prezentate în imagine.

 

 

Vă recomand să accesați și articolul care analizează modalitatea în care pot fi utilizate afișajele TFT împreună cu Arduino.

 

Puteți descărca de aici codul sursă pentru afișajul controlat de circuitul integrat ST7789. 

 

Puteți descărca de aici codul sursă pentru afișajul controlat de circuitul integrat ILI9341. 

 

(Link-ul va deschide un fișier de tip .ino într-o pagină nouă, însă browser-ul îl va interpreta ca pe un fișier text, ceea ce înseamnă că atunci când îl veți salva, apăsând eventual combinat Ctrl+S, selectați la “Save as type” – “All files”, și apoi introduceți după denumirea fișierului textul: .ino, astfel va fi salvat un fișier care poate fi accesat direct de către Arduino IDE. Altfel, selectați tot textul (Ctrl + A), îl copiați (Ctrl + C), deschideți o fereastră nouă în Arduino IDE, unde îl veți lipi (Ctrl + V) și îl puteți rula.)

 

 

Dacă ați realizat montarea componentelor pe breadboard, descărcați codul sursă din link-ul de mai sus și încărcați-l în memoria dispozitivului Arduino, apoi bucurați-vă de joc! 🎮

 

Cum funcționează codul jocului „Minte Sprintenă – Adunare Viteză”

Codul este organizat în mod clar, cu funcții dedicate fiecărei etape a jocului, de la inițializare până la evaluarea finală.

 

Inițializarea componentelor și afișajului

La începutul execuției, funcția setup() configurează toate pinii necesari: butoanele sunt setate ca intrări cu rezistență internă activată, LED-urile și buzzerul sunt definite ca ieșiri, iar afișajul ST7789/ILI9341 este inițializat cu rezoluția de 240×320 pixeli, orientare verticală și fundal negru. Se generează și o referință aleatorie, randomSeed(analogRead(A1)),  pentru întrebările din joc, folosind citirea analogică de pe pinul A1, pentru a asigura variație între sesiuni.

 

Ecranul de start și pregătirea jucătorului

După inițializare, jucătorul este întâmpinat cu un ecran de start care afișează titlul jocului și instrucțiunea „Apasă butonul roșu”. Programul așteaptă apăsarea acestui buton pentru a continua, iar confirmarea este însoțită de un ton sonor scurt. Urmează o numărătoare inversă vizuală și auditivă, care creează suspans și marchează începutul provocării.

 

Rularea jocului – 45 de niveluri cu dificultate progresivă

Funcția ruleazaJoc() parcurge toate cele 45 de niveluri, fiecare generând o întrebare de adunare cu două numere, în funcție de dificultate. Primele zece niveluri conțin adunări între două numere de o cifră, iar pe măsură ce jucătorul avansează, apar combinații între numere de două și trei cifre. Pentru fiecare nivel, se generează două numere aleatoare a și b, se calculează răspunsul corect (corect = a + b), iar apoi se creează trei variante greșite, apropiate de răspunsul real, pentru a menține provocarea.

 

Cele patru variante sunt afișate pe ecran, fiecare asociată cu un buton colorat:

  • Roșu pentru prima variantă

  • Galben pentru a doua variantă

  • Verde pentru a treia variantă

  • Albastru pentru a patra variantă

 

Jucătorul are un timp limitat pentru a răspunde — 6 secunde pentru nivelurile 1–30 și 10 secunde pentru nivelurile 31–45. Dacă răspunsul este corect, se aprinde LED-ul verde, ecranul se colorează într-un verde intens, iar buzzerul emite un ton plăcut. Dacă răspunsul este greșit sau timpul expiră, se aprinde LED-ul roșu, ecranul se face roșu, iar buzzerul emite un sunet de eroare.

 

Evaluarea finală și feedback

La finalul celor 45 de niveluri, funcția afiseazaScorFinal() afișează scorul total, exprimat atât numeric, cât și procentual, precum și timpul total în care jucătorul a parcurs jocul. Aceste informații oferă o imagine clară asupra performanței și permit departajarea jucătorilor în cadrul unui concurs. Dacă doi participanți obțin același scor, cel care finalizează provocarea într-un timp mai scurt este declarat câștigător.

 

Stabilizarea citirii butoanelor

Pentru a evita citirile false cauzate de apăsări rapide sau zgomot electric, funcția debouncedRead() introduce o întârziere de 40 milisecunde, verificând dacă butonul este cu adevărat apăsat. Această metodă de debounce software asigură o interacțiune stabilă și precisă pe tot parcursul jocului.

 

 

Posibile disfuncționalități și soluții în proiectul „Minte Sprintenă” - Ghid de depanare

 

  • Dacă afișajul ILI9341 sau ST7789 rămâne negru sau nu reacționează, este posibil ca pinii CS, DC sau RST să fie conectați greșit sau să nu fie compatibili cu modulul fizic. Verifică tensiunea pe pinul VCC — unele module necesită 3.3V, altele acceptă 5V doar dacă jumperul J1 este lăsat liber.

  • Dacă textul apare distorsionat sau inversat, probabil setRotation() nu este setat corect. Valoarea 2 este potrivită pentru afișajele montate cu conectorii în partea de jos, dar poate fi ajustată în funcție de orientarea fizică.

  • Dacă butoanele nu răspund, verifică dacă sunt conectate corect la pinii digitali și dacă folosesc rezistențe interne de pull-up (INPUT_PULLUP). Un buton conectat invers sau fără contact bun poate fi interpretat ca apăsat permanent.

  • Dacă LED-urile nu se aprind la răspunsuri corecte/greșite, asigură-te că pinii 6 și 7 sunt setați ca OUTPUT și că LED-urile sunt conectate cu rezistențe limitatoare. Un LED defect sau o conexiune slabă poate duce la lipsa feedbackului vizual.

  • Dacă difuzorul nu emite sunete, verifică dacă este conectat corect la pinul A0 și dacă funcția tone() este apelată cu durată suficientă. Unele difuzoare necesită semnal PWM continuu, nu doar impulsuri scurte.

  • Dacă variantele de răspuns sunt prea apropiate sau par incorecte, algoritmul de generare poate fi ajustat. La nivelurile superioare, se încearcă păstrarea ultimei cifre, dar uneori rezultatul poate fi prea similar cu cel corect. Poți introduce o verificare suplimentară pentru a evita duplicarea.

  • Dacă scorul final nu reflectă performanța reală, verifică dacă variabila scor este resetată corect la începutul fiecărui joc și dacă incrementarea se face doar la răspunsuri corecte.

  • Dacă ecranul pare blocat după un joc, poți adăuga un buton de restart sau o interacțiune suplimentară pentru reluarea jocului.

  • Dacă timpul de răspuns pare prea scurt sau prea lung, ajustează limitaTimp în funcție de nivel și de vârsta jucătorilor. Un timp prea scurt poate frustra, iar unul prea lung poate reduce dinamismul.

 

Compatibilitatea codului cu afișajul – ce se întâmplă dacă nu este corectă?

 

Controlerele ST7789 și ILI9341 au comenzi diferite, rezoluții diferite și uneori chiar interfețe fizice diferite (cu sau fără pin CS). Dacă în cod este apelată biblioteca greșită sau dacă obiectul display este instanțiat cu parametri nepotriviți, pot apărea simptome vizuale și comportamentale clare:

  • Ecranul rămâne complet negru, chiar dacă backlight-ul este activ

  • Se afișează doar o parte din imagine (de exemplu, doar 2/3 din ecran)

  • Culorile sunt inversate sau complet greșite (ex: galben devine albastru)

  • Textul este distorsionat, trunchiat sau afișat în poziții incorecte

  • Comenzile fillScreen() sau drawRect() nu au niciun efect vizibil

  • La schimbarea rotației cu setRotation(), o parte din ecran rămâne blocată cu culoarea anterioară

  • Ecranul reacționează doar parțial sau pare înghețat după inițializare

 

Aceste simptome apar frecvent când se folosește biblioteca Adafruit_ILI9341 pe un afișaj ST7789 sau invers. De asemenea, dacă se folosește Adafruit_ST7735 în loc de Adafruit_ST7789, pot apărea artefacte vizuale din cauza diferențelor de rezoluție și offset intern.

 

 

Ce am învățat și cum putem duce jocul mai departe

 

Proiectul Minte Sprintenă – Adunare Rapidă ne-a oferit o experiență completă de proiectare educațională, în care logica matematică, interacțiunea fizică și feedback-ul vizual și sonor se îmbină într-un mod captivant. Am învățat cum să structurăm un joc modular pe platforma Arduino, cum să folosim afișajul ST7789 pentru a crea o interfață clară și motivantă, și cum să oferim răspunsuri în timp real prin LED-uri și buzzer. Am descoperit importanța unei dificultăți progresive, a unui timp de răspuns adaptat și a unei evaluări finale care să stimuleze competiția și învățarea.

 

Pe partea tehnică, am înțeles cum funcționează bibliotecile Adafruit — ST7789, GFX și BusIO — și cum se instalează corect. Am aplicat principii de debounce software pentru stabilitatea citirii butoanelor și am folosit funcții grafice pentru a centra textul, a desena forme și a crea o experiență vizuală coerentă.

 

Dar poate cel mai valoros lucru este că am creat un cadru flexibil, care poate fi extins în multe direcții. Iată câteva idei pentru dezvoltarea viitoare:

  • Diversificarea provocărilor matematice: putem adăuga scăderi, înmulțiri, împărțiri, fracții sau exerciții mixte, cu niveluri tematice.

  • Moduri de joc personalizate: alegerea nivelului de dificultate, selecția tipului de operație sau chiar un mod antrenament fără limită de timp.

  • Integrarea cu alte module: salvarea scorurilor pe card SD, transmiterea lor prin Bluetooth sau Wi-Fi, conectarea la o aplicație mobilă.

  • Extinderea interfeței grafice: afișaje mai mari, touchscreen, animații sau efecte vizuale care să însoțească progresul jucătorului.

  • Dezvoltarea mecanicii de joc: sistem de puncte, trofee, niveluri de experiență, clasamente locale sau online.

  • Adaptare internațională: traducerea completă a jocului, inclusiv mesajele afișate, pentru a fi utilizat în contexte educaționale din alte țări.

 

Prin modularitatea codului și claritatea logicii, acest joc nu este doar un instrument de învățare, ci o platformă deschisă pentru explorare, creativitate și colaborare. Fiecare extensie poate deveni o lecție nouă, iar fiecare versiune — o oportunitate de a aduce STEM mai aproape de elevi, într-un mod interactiv și memorabil.

 

 

Deschide următoarea provocare și lasă înmulțirea să-ți pună mintea în mișcare!

​​​​​​​

​​​​​​​