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.
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ă.
Î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ă.
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.
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