This shows you the differences between two versions of the page.
pm:prj2021:apredescu:rubiks-mini-cube-2x2x2 [2021/05/27 22:24] bogdan.dobrin |
pm:prj2021:apredescu:rubiks-mini-cube-2x2x2 [2021/06/01 14:29] (current) bogdan.dobrin |
||
---|---|---|---|
Line 30: | Line 30: | ||
- Fire | - Fire | ||
==== Schema electrică ==== | ==== Schema electrică ==== | ||
+ | {{ :pm:prj2021:apredescu:rubik_shematic.png?nolink&500 |}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | ==== Instrucțiunile jocului ==== | ||
{{:pm:prj2021:apredescu:instructions2_p2.pdf|Instrucțiunile jocului}} | {{:pm:prj2021:apredescu:instructions2_p2.pdf|Instrucțiunile jocului}} | ||
- | {{ :pm:prj2021:apredescu:rubiks_instructiuns.png?nolink&600 |}} | + | {{ :pm:prj2021:apredescu:rubiks_instructiuns.png?nolink&500 |}} |
+ | 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 ===== | ===== 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ă. | ||
+ | |||
+ | {{ :pm:prj2021:apredescu:20210527_234407.jpg?nolink&300 |}} | ||
===== Concluzii ===== | ===== 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ă. | ||
+ | |||
+ | {{ :pm:prj2021:apredescu:rubik_result1.png?nolink&300 |}} | ||
===== Download ===== | ===== Download ===== | ||
Line 45: | Line 54: | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
+ | Cea mai dificilă parte a fost realizarea lipiturilor: matricile LED sunt foarte mici iar letconul este imprecis. | ||
+ | |||
+ | {{ :pm:prj2021:apredescu:20210516_201216.jpg?nolink&300 |}} | ||
+ | |||
+ | {{ :pm:prj2021:apredescu:20210513_232051.jpg?nolink&300 |}} | ||
+ | |||
+ | Cum arată cele două piese din matrici LED lipite. Îmbinate una în alta, ca două piese LEGO, vor forma cubul dorit. | ||
+ | |||
+ | {{ :pm:prj2021:apredescu:20210516_231137.jpg?nolink&300 |}} | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
https://create.arduino.cc/projecthub/electropeak/neopixel-how-to-control-ws2812-rgb-led-w-arduino-46c08f | 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: | ||
+ | - https://youtu.be/1yBg0HUhKhw | ||
+ | - https://youtu.be/wy5FuLZ_PjM | ||
+ | - https://youtu.be/m6VfrWVUtEk | ||
+ | |||
+ | 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 | https://ocw.cs.pub.ro/courses/pm/prj2021/apredescu/rubiks-mini-cube-2x2x2 |