Proiectul este implementat pe platforma Arduino, folosind limbajul de programare C/C++ specific mediului Arduino IDE.
Laboratoare folosite
Laboratorul 0 – GPIO → folosit pentru configurarea pinului pentru receptorul IR.
Laboratorul 1 – UART → folosit pentru a afișa informații de debug în consola serială.
Laboratorul 2 – Întreruperi → folosit pentru tratarea semnalelor de la receptorul IR și implementarea debounce-ului pentru semnalele IR.
Laboratorul 3 – Timere / PWM →
Timer folosit pentru delay-uri pentru motorul DC.
PWM folosit pentru controlul vitezei motorului DC prin L293D.
Laboratorul 6 – I2C → folosit pentru afișajul pe ecran.
Biblioteci
Biblioteci externe folosite:
AccelStepper.h – pentru controlul motorului stepper
LiquidCrystal_I2C.h - pentru afișarea pe ecran
IRremote.hpp - pentru recepția și decodarea semnalelor de la telecomanda cu IR
Wire.h - pentru comunicarea I2C între microcontroller și ecranul LCD
Pseudocod
SETUP:
Initializează pinii butoanelo
Initializează driverul motorului DC
Initializează driverul motorului stepper
Initializează LCD-ul prin I2C
Initializează variabile
LOOP PRINCIPAL:
// Selectare număr jucători prin comenzi IR
DACĂ cod IR este recepționat:
INTERPRETEAZĂ codul pentru a identifica comanda (ex: cifra pentru număr jucători)
setează numar_jucatori corespunzător
Afișează pe LCD: "Jucători: " + numar_jucatori
Așteaptă o nouă comandă IR (debounce prin timp)
DACĂ numar_jucatori > 0 && start == 1:
Afișează pe LCD: "Distribuire cărți..."
PENTRU jucator ← 1 până la numar_jucatori:
// Mergi la poziția jucătorului
stepper.move(pași_necesari)
// Lansează cartea
PORNEȘTE motor_DC
AȘTEAPTĂ 100ms
OPREȘTE motor_DC
Afișează pe LCD: "Carte trimisă la Juc. " + jucator
// Resetare poziție
Afișează pe LCD: "Distribuire finalizată"
numar_jucatori ← 0
start ← 0
În urma realizării proiectului, am reușit să dezvolt un sistem automatizat de distribuire a cărților de joc, controlat printr-o telecomandă IR. Sistemul poate:
Selecta numărul de jucători (1–9) folosind telecomanda;
Alege numărul de cărți ce trebuie distribuite fiecărui jucător;
Controla un motor stepper pentru a roti cu precizie spre fiecare jucător;
Acționa un motor DC pentru a lansa cărțile;
Afișa starea sistemului și instrucțiunile pe un ecran LCD I2C;
Efectua distribuirea într-un mod ciclic, fără întoarcere;
Permite trimiterea de cărți individuale la un jucător ales ulterior.
Funcționalitatea generală a fost conform așteptărilor, sistemul fiind stabil și ușor de utilizat în cadrul unui joc de societate.
Concluzii
Proiectul a demonstrat cum pot fi integrate mai multe componente hardware și software într-un sistem util. Utilizarea unei telecomenzi IR a simplificat interacțiunea și a adăugat flexibilitate. Prin acest proiect am aprofundat cunoștințe legate de controlul motoarelor, comunicația I2C, utilizarea semnalelor IR și organizarea logicii într-un sistem embedded complex. De asemenea, proiectul a fost o bună ocazie de a exersa gândirea modulară, testarea incrementală și talentul meșteșugăresc.