This is an old revision of the document!


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.

Bibliografie/Resurse

pm/prj2021/apredescu/rubiks-mini-cube-2x2x2.1622546120.txt.gz · Last modified: 2021/06/01 14:15 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