Introducere
Un LED se aprinde, un ton discret îți gâdilă urechea, iar degetele tale au o singură secundă să apese butonul corect... Dacă ai reușit, scorul urcă. Dacă nu, jocul se încheie cu o fanfară descendentă, iar ecranul îți reamintește că vigilența este cheia. Bine ai venit în lumea Prinde Cârtița — un joc DIY, alimentat de un microcontroller Arduino, care îmbină perfect distractivul cu educativul.
Conceput ca un proiect interactiv cu LED-uri multicolore, butoane fizice și un afișaj digital TM1637, Prinde Cârtița transformă reflexele într-un spectacol vizual și auditiv. Mesajul „ROSU”, afișat la pornirea jocului, nu este doar un cuvânt — este identitatea lui. Într-un stil minimalist dar expresiv, jucătorul este invitat să înceapă experiența apăsând butonul roșu, declanșând o numărătoare inversă dinamică și plină de energie. Apoi urmează provocarea propriu-zisă: un LED se aprinde aleator, iar jucătorul are o singură șansă să apese butonul corespunzător în mai puțin de o secundă.
Îmbinarea dintre sunet, lumină și mișcare face din acest joc o platformă ideală pentru dezvoltarea vitezei de reacție și a coordonării mână-ochi. Mai mult decât atât, Prinde Cârtița este o demonstrație practică de electronică, logică programabilă și interacțiune fizică. Se adresează deopotrivă celor pasionați de robotică, educatorilor în căutare de activități STEM, dar și celor care vor să adauge un strop de ingeniozitate în propria colecție de proiecte personale.
Dincolo de componentele simple — LED-uri, butoane, difuzor și microcontroller — jocul captează esența interacțiunii creative: o idee clară, o execuție elegantă și o experiență care provoacă zâmbete și competiție. Este ușor de replicat, ușor de personalizat și perfect de prezentat la târguri, expoziții sau cluburi de tehnologii creative.
În final, Prinde Cârtița nu este doar un joc — este un manifest al curiozității, al priceperii puse în mișcare și al bucuriei de a face lucrurile să prindă viață cu ajutorul microcipurilor și câtorva linii de cod.
Cum se desfășoară efectiv jocul?
Jocul Prinde Cârtița începe odată ce jucătorul apasă pe butonul roșu, semnalizat printr-un mesaj stilizat „ROSU” afișat pe display-ul controlat de circuitul TM1637 și prin clipirea ritmică a LED-ului roșu. Apăsarea acestui buton activează o numărătoare inversă dinamică — 3, 2, 1 — însoțită de semnale sonore energice, pregătind jucătorul pentru intrarea în modul activ de joc.
Fiecare rundă aduce o provocare nouă: sistemul aprinde aleatoriu unul dintre cele patru LED-uri colorate — roșu, galben, verde sau albastru — pentru o perioadă scurtă de timp. Când LED-ul se aprinde, jucătorul trebuie să apese butonul corespunzător cât mai rapid.
Apăsarea corectă declanșează un ton de confirmare, crește scorul afișat pe display și permite continuarea jocului. În schimb, o reacție greșită sau întârziată determină încheierea jocului, semnalată de o secvență sonoră descrescătoare și un efect vizual intermitent al scorului.
Ritmul jocului este susținut de alternanța rapidă dintre LED-uri și presiunea timpului limitat — o fereastră de o secundă în care reacția jucătorului trebuie să fie precisă. Pe măsură ce scorul crește, jucătorul este motivat să devină mai rapid și mai concentrat, transformând fiecare rundă într-un exercițiu de reflex și coordonare.
Afișajul digital oferă un feedback clar, în timp real, iar efectele sonore ajută la menținerea atenției și a tensiunii ludice. După fiecare greșeală, sistemul revine elegant la ecranul „ROSU”, invitând jucătorul să încerce din nou și să-și depășească propriul record.
REGULAMENT – PRINDE CÂRTIȚA
1. Inițializarea jocului
Jocul începe când jucătorul apasă butonul roșu, semnalizat prin mesajul „ROȘU” afișat pe display-ul controlat de circuitul integrat TM1637 și prin clipirea ritmică a LED-ului roșu. Acest gest activează o numărătoare inversă dinamică — 3, 2, 1 — acompaniată de semnale sonore energice care anunță trecerea în modul activ de joc.
2. Mecanica rundelor
În fiecare rundă, sistemul aprinde aleatoriu unul dintre cele patru LED-uri colorate: roșu, galben, verde sau albastru, pentru o perioadă scurtă (≈1 secundă). Când LED-ul se aprinde, jucătorul trebuie să apese rapid butonul corespunzător.
3. Verificarea răspunsului
Răspuns corect → sistemul emite un ton de confirmare, scorul este actualizat pe display, iar jocul continuă.
Răspuns greșit sau întârziat → jocul se încheie, cu o secvență sonoră descrescătoare și un efect vizual intermitent al scorului final.
4. Timp și dificultate
Fiecare LED rămâne aprins doar aproximativ o secundă, iar reacția jucătorului trebuie să fie precisă și rapidă. Pe măsură ce scorul crește, presiunea timpului și alternanța LED-urilor cresc ritmul jocului, transformând fiecare rundă într-un exercițiu intens de reflex și coordonare vizual-motorie.
5. Feedback și reluare
Display-ul TM1637 oferă feedback instant, afișând scorul în timp real.
Sunetele și efectele vizuale mențin atenția și suspansul.
După fiecare greșeală, sistemul revine elegant la ecranul „ROȘU”, iar jucătorul poate relua provocarea pentru a-și îmbunătăți recordul personal.
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. 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.
După cum puteți observa, avem următoarele conexiuni electrice între componentele circuitului nostru:
Terminalul 1 al butonului roșu → Pin D12 Arduino
Terminalul 2 al butonului roșu → GND Arduino
Pinul D7 Arduino → Terminalul 1 al rezistorului R1 (asociat LED-ului roșu)
Terminalul 2 al rezistorului R1 → Terminalul pozitiv (+) al LED-ului roșu
Terminalul negativ (−) al LED-ului roșu → GND Arduino
Terminalul 1 al butonului galben → Pin D6 Arduino
Terminalul 2 al butonului galben → GND Arduino
Pinul D10 Arduino → Terminalul 1 al rezistorului R2 (asociat LED-ului galben)
Terminalul 2 al rezistorului R2 → Terminalul pozitiv (+) al LED-ului galben
Terminalul negativ (−) al LED-ului galben → GND Arduino
Terminalul 1 al butonului verde → Pin D8 Arduino
Terminalul 2 al butonului verde → GND Arduino
Pinul D4 Arduino → Terminalul 1 al rezistorului R3 (asociat LED-ului verde)
Terminalul 2 al rezistorului R3 → Terminalul pozitiv (+) al LED-ului verde
Terminalul negativ (−) al LED-ului verde → GND Arduino
Terminalul 1 al butonului albastru → Pin D9 Arduino
Terminalul 2 al butonului albastru → GND Arduino
Pinul D5 Arduino → Terminalul 1 al rezistorului R4 (asociat LED-ului albastru)
Terminalul 2 al rezistorului R4 → Terminalul pozitiv (+) al LED-ului albastru
Terminalul negativ (−) al LED-ului albastru → GND Arduino
Terminalul pozitiv (+) al difuzorului → Pin D12 Arduino
Terminalul negativ (−) al difuzorului → GND Arduino
Terminalul 1 al afișajului (CLK) → Pin D3 Arduino
Terminalul 2 al afișajului (DIO) → Pin D2 Arduino
Terminalul 3 al afișajului (GND) → GND Arduino
Terminalul 4 al afișajului (5V) → Pin 5V Arduino
Materiale necesare:
Instalarea componentelor pe breadboard
După cum observați, nu avem foarte multe conexiuni electrice de realizat. Trebuie doar să fiți atenți la câteva detalii esențiale pentru montajul corect:
Codul sursă
Dacă nu ați făcut acest lucru deja, înainte de a compila codul sursă, trebuie să instalați o bibliotecă — aceea care ne permite să interacționăm cu afișajul cu 7 segmente controlat de circuitul integrat TM1637. Această bibliotecă poartă denumirea „TM1637”, creată de Avishay Orpaz, și aceasta înseamnă că, în căsuța care permite căutarea bibliotecilor, veți căuta termenul „TM1637”, veți selecta biblioteca „TM1637 by Avishay Orpaz” și apoi veți apăsa butonul „INSTALL”.
Puteți descărca de aici codul sursă. Acesta conține explicații pentru aproape fiecare linie de cod.
(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! 🎮
Dacă, din punctul vostru de vedere, jocul este prea lent sau prea rapid, puteți modifica o linie de cod regasită în bucla principală, loop():
unde 1000 reprezintă viteza de reacție — adică timpul în care LED-ul rămâne aprins și jucătorul trebuie să apese butonul corect, și este exprimată în milisecunde — ceea ce înseamnă 1000 de milisecunde, deci o secundă. Dacă vrei să faci jocul mai rapid, poți reduce valoarea:
while (millis() - startTime < 800){ //0.8 secunde
while (millis() - startTime < 600){ //0.6 secunde
sau o poți majora:
while (millis() - startTime < 1200){ //1.2 secunde
De asemenea, dacă vrei să variezi viteza în funcție de scor sau nivel, poți transforma valoarea de 1000 ms într-o variabilă dinamică:
int timpReactie = max(400, 1000 - score * 10); // Cu cât scorul e mai mare, timpul e mai scurt
while (millis() - startTime < timpReactie){
Proiectul poate fi dus la următorul nivel prin integrarea componentelor într-o carcasă personalizată. Dacă aveți acces la o imprimantă 3D, puteți crea o cutie atractivă și ergonomică, perfect adaptată designului dorit. În lipsa unei imprimante 3D, se poate opta pentru o cutie din ABS, specifică instalațiilor electrice, care oferă rezistență, siguranță și un aspect profesional. Astfel, proiectul capătă nu doar funcționalitate, ci și o prezentare demnă de admirat. Accesează resursele de aici.
O primă modificare. V2.0.
Am reconfigurat jocul Prinde Cârtița aducând câteva îmbunătățiri față de varianta originală. Ce este nou în versiunea 2.0:
Un număr fix de niveluri (50), cu dificultate progresivă
Scor cu bonusuri și penalizări:
+1 punct pentru răspuns corect
−1 punct pentru greșeală
+3 puncte pentru 5 reușite consecutive
+5 puncte pentru 10 reușite consecutive (total +8 puncte)
−3 puncte dacă ratezi 5 runde la rând
Protecție la scor negativ (care era valabilă și în varianta inițială):
Scorul nu poate scădea sub 0, indiferent de numărul de greșeli
Bonus de acuratețe:
Dacă jucătorul obține 5 apăsări precise consecutive (+2 fiecare), primește +5 puncte suplimentare
După bonus, combo-ul se resetează
Penalizare permanentă pentru apăsări greșite:
Orice apăsare a unui buton greșit, în orice moment (inclusiv în runda curentă), scade scorul cu −1
Apăsarea greșită nu anulează scorul pozitiv obținut în aceeași rundă, dar îl penalizează separat
Puteți descărca de aici codul sursă. Acesta conține explicații pentru aproape fiecare linie de cod.
(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.)
A doua modificare. V2.1.
Ce este nou în versiunea 2.1:
60 secunde de joc
Timp de reacție dinamic:
Inițial: până la 1000ms
După 40s → minim 400ms
După 50s → minim 320ms
Afișaj:
Primele două cifre = timp rămas
Ultimele două cifre = scor
Răspuns corect: +1
Greșit sau întârziat: −1
Bonusuri și penalizări pentru combo-uri
Avertisment sonor la ultimele 10 secunde
Puteți descărca de aici codul sursă.
(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.)
A treia modificare. V2.2.
Care sunt dferențele dintre versiunea 2.2 și cea originală:
Un număr fix de niveluri: 40, cu dificultate progresivă
Scorul pornește de la 5 puncte (bonus de bun-venit pentru jucători)
Două sau trei LED-uri aprinse simultan:
Până în momentul în care scorul depășește 40 de puncte, se vor aprinde câte două LED-uri simultan; dacă utilizatorul apasă ambele butoane asociate LED-urilor, primește 2 puncte, dacă apasă doar unul, primește 1 punct, iar dacă nu apasă niciunul la timp sau apasă un buton greșit, pierde 2 puncte.
Dacă scorul depășește 40 de puncte, se activează modul Turbo, adică se vor aprinde câte trei LED-uri simultan; dacă utilizatorul apasă toate cele trei butoane asociate LED-urilor, primește 3 puncte, dacă apasă două, primește 2 puncte, dacă apasă doar unul, primește 1 punct, iar dacă nu apasă niciunul la timp sau apasă un buton greșit, pierde 3 puncte
Protecție la scor negativ (care era valabilă și în varianta inițială):
Scorul nu poate scădea sub 0, indiferent de numărul de greșeli
Puteți descărca de aici codul sursă.
(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.)
Ai reflexe bune? Vezi cum le poți duce la extrem în Cursa LED-urilor — atenție maximă și decizie rapidă!