Stap 3: Concept
Door elke LED verbinden met een shift register, en verschuift uit een data matrix van 54 bytes naar een daisy chain van shift registers, kunnen we controleren onze LED's maar wij willen. Met behulp van alleen digitale schrijft, de drie diodes in een RBG LED ons voorzien van 8 kleuren om uit te kiezen: rood, groen, blauw, Yellow(RG), Violet(RB), Teal(BG) en White(RGB). Als we onze LED's verbinden systematisch zodat hun leads komen met de dezelfde pinnen op elke overheveling overeen registreren, dan we 8 bytes definiëren kunnen, die elk een kleur vertegenwoordigen een LED ontvangen.
Om de kubus maken we een 54-byte-matrix, waarin elk van de zes kleuren kiezen we negen keer voorkomt. De volgorde van bytes in deze array is belangrijk, omdat, op opstarten, deze array verschoven zal krijgen uit meteen, en de kubus moet brengen naar een staat waarin het is al opgelost. Rotaties worden uitgevoerd door matrix waarden verwisselen in een een-op-een-manier, en dan verschuiven uit de array opnieuw. Zoals elke LED komt altijd met dezelfde index als in de matrix overeen, kunnen we gemakkelijk achterhalen welke waarden moeten worden verwisseld om een gegeven rotatie.
Na een Rubik's kubus moet u vinden dat er precies twaalf verschillende operaties die kunnen worden uitgevoerd. Een Rubik's kubus heeft zes vlakken, en we kunnen gezicht en draaien in een van twee richtingen. Houden van de stand van een vaste, verandert elke rotatie de positie van twaalf vierkantjes langs de rand van de kubus, evenals 8 vierkantjes op een van de gezichten. Dus moeten we in onze code, twaalf subroutines dat elk swap twintig bytes in de matrix. Voor de exploitatie van de kubus, besloten hebben we op 8 knoppen per gezicht, zodat we een van de vier randen van dat gezicht in beide richtingen kunnen draaien. Voor een kubus met zes vlakken en 48 knoppen, zullen er vier sets van twaalf identiek knoppen. Om dit te verklaren verbinden wij elektrisch identiek knoppen, zodat ze een ingang aan de Arduino delen kunnen. Zo gebruiken wij 15 pinnen op de Arduino in alle. We konden hebben gesneden dit nummer omlaag kopen aanpakken van de knoppen met een multiplexer waarvoor minder ingangen.