Rubik's Mini Cube (2x2x2)

Introducere

  • Rubik's Mini Cube (2x2x2) este varianta mai mică a clasicului joc 3x3x3, în care utilizatorul amestecă fețele cubului și încearcă refacerea acestuia.
  • Acest proiect constă într-o adaptare modernă a jocului, fețele cubului fiind realizate din matrici LED RGB, utilizatorul rotind fețele prin apăsarea de butoane.
  • Scopul proiectului este oferirea unui joc plăcut, simplu și interesant pentru micile pauze de la birou.
  • După ce am răsfoit proiectele din Room of Inspiration, ideea a venit gândindu-mă că ar fi interesant să combin conceptul de cub decoritiv din LED-uri cu un joc pe LED-uri.
  • Utilitatea unui cub rubik este dată de măsura în care considerăm că jocurile sunt una din micile plăceri ale vieții.
  • Principalul avantaj al unui cub rubik cu LED-uri și butoane este accesibilitatea pentru persoanele cu dizabilități. Operarea cubului se realizează cu un singur deget. Jucarea cu un cub tradițional presupune cel puțin o mână complet funcțională, poate chiar două pentru o rezolvare optimă.

Descriere generală

  1. În funcție de sensul dorit, jucătorul apasă pe unul din cele 8 butoane ale modulului TM1638 pentru “a roti” cubul
  2. Microcontroller-ul Arduino UNO primește ca input apăsarea butonului și updatează output-ul
  3. Inputul matricilor LED este output-ul microcontroller-ului
  4. Se actualizează culorile de pe cub
  5. Se repetă de la pasul 1

Hardware Design

Componente necesare

  1. Arduino UNO
  2. Breadboard
  3. 6 matrici LED RGB 2×2
  4. Modul TM1638
  5. 6 Butoane
  6. 8 Rezistențe
  7. Condensator
  8. Fire

Schema electrică

Software Design

Instrucțiunile jocului Cod-ul pentru proiect: https://github.com/bvdobrin/rubiks-mini-cube-2x2x2

Pentru realizarea software-ului am pornit de la biblioteca Adafruit_NeoPixel.h, pentru lucrul cu matricile RGB LED, și de la header-ele (explicate în tutorialul din bibliografie) TM1638_Iitialization.h, readButtons.h și setLED.h pentru comunicarea serială între modulul TM1638 și Arduino Uno. Header-ului setLED.h i-am adaugat functia doTimer care realizeaza funcția de stopwatch a cubului rubik pentru cronometrarea timpului de rezolvare în secunde și afișarea pe dispay-ul de 8 cifre în 7 segmente. În rubiksCube.h se regăsesc funcțiile necesare unui cub rubik: initializarea fețelor în culorile potrivite și funcțiile “de rotire” a fețelor (în cazul nostru de permutare a culorilor între led-uri). Informația culorilor pentru cub este reținută în long cube[6][4], această matrice fiind actualizată cu fiecare mutare. În Arduino un long are 4 octeți, astfel ne este suficient un singur long pentru a stoca cele 3 variabile de culoare RGB care se reprezintă pe câte 8 biți. RubiksMiniCube.ino are logica principală a programului. Folosindu-se de funcțiile expuse de headere, actualizează culorile led-urilor în concordanță cu apăsările butoanelor.

Rezultate Obţinute

Rezultatul este un proiect complet funcțional, care nu doar arată interesant pe orice birou l-ai pune, ci îți poate și ține mintea ocupată atunci când plictiseala impune o scurtă pauză.

Concluzii

În concluzie, libertatea alegerii proiectului mi-a dat oportunitatea de a lucra la ceva care personal m-a pasionat cu adevărat. Astfel, am învățat să prototipez, să fac lipituri, iar îmbinarea hardware cu software a conturat “o jucărie” palpabilă.

Download

Jurnal

Cea mai dificilă parte a fost realizarea lipiturilor: matricile LED sunt foarte mici iar letconul este imprecis.

Cum arată cele două piese din matrici LED lipite. Îmbinate una în alta, ca două piese LEGO, vor forma cubul dorit.

Bibliografie/Resurse

pm/prj2021/apredescu/rubiks-mini-cube-2x2x2.txt · Last modified: 2021/06/01 14:29 by bogdan.dobrin
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