Paso 3: concepto
Al conectar cada LED a un registro de cambio y el cambio a una matriz de datos de 54 bytes a una cadena de registros de cambio, podemos controlar nuestro LED sin embargo queremos. Usando sólo digital escribe, los tres diodos en un LED RBG nos proporcionan 8 colores a elegir: rojo, verde, azul, Yellow(RG), Violet(RB), Teal(BG) y White(RGB). Si vamos a conectar nuestros LED sistemáticamente para que sus conductores corresponden a los mismos pernos en cada turno registro, entonces podemos definir una recepción LED 8 bytes, cada una de ellas representa un color.
Para que funcione el cubo creamos una matriz de bytes de 54, en que cada uno de los seis colores elegimos aparece nueve veces. El orden de los bytes de esta matriz es importante, porque, al arrancar, esta matriz se consigue cambiado de puesto hacia fuera inmediatamente y debe llevar el cubo a un estado en el que ya esta solucionado. Rotaciones son ejecutadas por los intercambiar valores del array de manera uno por uno y luego un desplazamiento hacia fuera de la matriz otra vez. Como cada LED corresponde siempre con el mismo índice en el array, fácilmente nos podemos averiguar valores que deben ser cambiados para lograr una rotación determinada.
Tras inspeccionar un cubo de Rubik se debe encontrar que hay exactamente doce operaciones distintas que se pueden realizar. Un cubo de Rubik tiene seis caras, y podemos tomar cualquier cara y gira en una de dos direcciones. Mantiene una orientación fija, cada rotación cambiará la posición de las doce plazas en el borde del cubo, así como 8 plazas en una de las caras. Así, en nuestro código, debemos tener 12 subrutinas que cada intercambio 20 bytes de la matriz. Para el funcionamiento del cubo, nos decidimos por 8 botones por cara, así que nos podemos girar cualquiera de los cuatro bordes de ese rostro en cualquier dirección. Para un cubo con seis caras y 48 botones, habrá cuatro series de doce botones idénticos. Para tener en cuenta esto nos conectamos eléctricamente botones idénticos, por lo que pueden compartir una entrada en el Arduino. Así, utilizamos 15 pines de Arduino en todos. Podríamos haber cortar este número abajo Compro abordar los botones con un multiplexor que requiere pocos insumos.