Table of Contents

Rubik's Mini Cube (2x2x2)

Introducere

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

PDF proiect

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

https://create.arduino.cc/projecthub/electropeak/neopixel-how-to-control-ws2812-rgb-led-w-arduino-46c08f

https://www.arduino.cc/en/tutorial/pushbutton

Tutorial YouTube pentru folosirea modulului TM1638:

Demo Rubik's Mini Cube YouTube: https://youtu.be/0midToTdj9o

Cod Rubik's Mini Cube GitHub: https://github.com/bvdobrin/rubiks-mini-cube-2x2x2

https://ocw.cs.pub.ro/courses/pm/prj2021/apredescu/rubiks-mini-cube-2x2x2