//2D Rubiks cube
/*
A B C D E F G H
1 | | |
2 | | |
3 | | | | | | | | |
4 | | | | | | | | |
5 | | |
6 | | |
5.4 uF caps
*/
//NeoPixel setup
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#define LED_PIN 6
#define LED_COUNT 48
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
int max_brightness = 50;
uint32_t red = strip.Color(max_brightness, 0, 0);
uint32_t green = strip.Color(0, max_brightness, 0, 0);
uint32_t blue = strip.Color(0, 0, max_brightness);
uint32_t magenta = strip.Color(max_brightness, 0, max_brightness);
uint32_t aqua = strip.Color(0, max_brightness, max_brightness);
uint32_t yellow = strip.Color(max_brightness, max_brightness, 0);
uint32_t black = strip.Color(0, 0, 0);
uint32_t white = strip.Color(max_brightness, max_brightness, max_brightness);
//Initial pixel setup
//Empty squares
uint32_t RGB_A1 = black;
uint32_t RGB_A2 = black;
uint32_t RGB_A5 = black;
uint32_t RGB_A6 = black;
uint32_t RGB_B1 = black;
uint32_t RGB_B2 = black;
uint32_t RGB_B5 = black;
uint32_t RGB_B6 = black;
uint32_t RGB_C1 = black;
uint32_t RGB_C2 = black;
uint32_t RGB_C5 = black;
uint32_t RGB_C6 = black;
uint32_t RGB_D1 = black;
uint32_t RGB_D2 = black;
uint32_t RGB_D5 = black;
uint32_t RGB_D6 = black;
uint32_t RGB_G1 = black;
uint32_t RGB_G2 = black;
uint32_t RGB_G5 = black;
uint32_t RGB_G6 = black;
uint32_t RGB_H1 = black;
uint32_t RGB_H2 = black;
uint32_t RGB_H5 = black;
uint32_t RGB_H6 = black;
//Top square
uint32_t RGB_E1 = green;
uint32_t RGB_F1 = green;
uint32_t RGB_E2 = green;
uint32_t RGB_F2 = green;
//Back square
uint32_t RGB_A3 = red;
uint32_t RGB_B3 = red;
uint32_t RGB_A4 = red;
uint32_t RGB_B4 = red;
//Left square
uint32_t RGB_C3 = magenta;
uint32_t RGB_D3 = magenta;
uint32_t RGB_C4 = magenta;
uint32_t RGB_D4 = magenta;
//Front square
uint32_t RGB_E3 = blue;
uint32_t RGB_F3 = blue;
uint32_t RGB_E4 = blue;
uint32_t RGB_F4 = blue;
//Right square
uint32_t RGB_G3 = aqua;
uint32_t RGB_H3 = aqua;
uint32_t RGB_G4 = aqua;
uint32_t RGB_H4 = aqua;
//Bottom square
uint32_t RGB_E5 = yellow;
uint32_t RGB_F5 = yellow;
uint32_t RGB_E6 = yellow;
uint32_t RGB_F6 = yellow;
//LED assignments
int LED_A1 = 0; int LED_B1 = 1; int LED_C1 = 2; int LED_D1 = 3; int LED_E1 = 4; int LED_F1 = 5; int LED_G1 = 6; int LED_H1 = 7;
int LED_A2 = 8; int LED_B2 = 9; int LED_C2 = 10; int LED_D2 = 11; int LED_E2 = 12; int LED_F2 = 13; int LED_G2 = 14; int LED_H2 = 15;
int LED_A3 = 16; int LED_B3 = 17; int LED_C3 = 18; int LED_D3 = 19; int LED_E3 = 20; int LED_F3 = 21; int LED_G3 = 22; int LED_H3 = 23;
int LED_A4 = 24; int LED_B4 = 25; int LED_C4 = 26; int LED_D4 = 27; int LED_E4 = 28; int LED_F4 = 29; int LED_G4 = 30; int LED_H4 = 31;
int LED_A5 = 32; int LED_B5 = 33; int LED_C5 = 34; int LED_D5 = 35; int LED_E5 = 36; int LED_F5 = 37; int LED_G5 = 38; int LED_H5 = 39;
int LED_A6 = 40; int LED_B6 = 41; int LED_C6 = 42; int LED_D6 = 43; int LED_E6 = 44; int LED_F6 = 45; int LED_G6 = 46; int LED_H6 = 47;
char RowCol_ID = '1';
bool SW_FW_R = HIGH;
bool SW_BK_L = LOW;
bool SW_UP = LOW;
bool SW_LFT = LOW;
bool SW_RGT = LOW;
bool SW_DW = LOW;
const int Pin_SW_FW_R = 2;
const int Pin_SW_BK_L = 3;
const int Pin_SW_UP = 8;
const int Pin_SW_LFT = 9;
const int Pin_SW_RGT = 10;
const int Pin_SW_DW = 11;
void setup() {
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
strip.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
strip.show(); // Turn OFF all pixels ASAP
strip.setBrightness(max_brightness); // Set BRIGHTNESS (max = 255)
pinMode(Pin_SW_FW_R, INPUT);
pinMode(Pin_SW_BK_L, INPUT);
pinMode(Pin_SW_UP, INPUT);
pinMode(Pin_SW_LFT, INPUT);
pinMode(Pin_SW_RGT, INPUT);
pinMode(Pin_SW_DW, INPUT);
Serial.begin(9600);
rainbow(1, 2);
updateFaces();
RandomMoves(8);
}
void loop() {
updateFaces();
SW_FW_R = digitalRead(Pin_SW_FW_R);
SW_BK_L = digitalRead(Pin_SW_BK_L);
SW_UP = digitalRead(Pin_SW_UP);
SW_LFT = digitalRead(Pin_SW_LFT);
SW_RGT = digitalRead(Pin_SW_RGT);
SW_DW = digitalRead(Pin_SW_DW);
if (SW_RGT == HIGH){
switch (RowCol_ID) {
case '1':
RowCol_ID = '2';
break;
case '2':
RowCol_ID = '3';
break;
case '3':
RowCol_ID = '4';
break;
case '4':
RowCol_ID = '5';
break;
case '5':
RowCol_ID = '6';
break;
case '6':
RowCol_ID = '1';
break;
default:
RowCol_ID = '1';
break;
}
}
if (SW_LFT == HIGH){
switch (RowCol_ID) {
case '1':
RowCol_ID = '6';
break;
case '2':
RowCol_ID = '1';
break;
case '3':
RowCol_ID = '2';
break;
case '4':
RowCol_ID = '3';
break;
case '5':
RowCol_ID = '4';
break;
case '6':
RowCol_ID = '5';
break;
default:
RowCol_ID = '6';
break;
}
}
if (SW_DW == HIGH){
switch (RowCol_ID) {
case 'A':
RowCol_ID = 'B';
break;
case 'B':
RowCol_ID = 'C';
break;
case 'C':
RowCol_ID = 'D';
break;
case 'D':
RowCol_ID = 'E';
break;
case 'E':
RowCol_ID = 'F';
break;
case 'F':
RowCol_ID = 'G';
break;
case 'G':
RowCol_ID = 'H';
break;
case 'H':
RowCol_ID = 'A';
break;
default:
RowCol_ID = 'A';
break;
}
}
if (SW_UP == HIGH){
switch (RowCol_ID) {
case 'A':
RowCol_ID = 'H';
break;
case 'B':
RowCol_ID = 'A';
break;
case 'C':
RowCol_ID = 'B';
break;
case 'D':
RowCol_ID = 'C';
break;
case 'E':
RowCol_ID = 'D';
break;
case 'F':
RowCol_ID = 'E';
break;
case 'G':
RowCol_ID = 'F';
break;
case 'H':
RowCol_ID = 'G';
break;
default:
RowCol_ID = 'H';
break;
}
}
switch (RowCol_ID) {
case '1':
Preview_Row1();
if (SW_FW_R == HIGH){
Right_Row1();
}
else if (SW_BK_L == HIGH){
Left_Row1();
}
break;
case '2':
Preview_Row2();
if (SW_FW_R == HIGH){
Right_Row2();
}
else if (SW_BK_L == HIGH){
Left_Row2();
}
break;
case '3':
Preview_Row3();
if (SW_FW_R == HIGH){
Right_Row3();
}
else if (SW_BK_L == HIGH){
Left_Row3();
}
break;
case '4':
Preview_Row4();
if (SW_FW_R == HIGH){
Right_Row4();
}
else if (SW_BK_L == HIGH){
Left_Row4();
}
break;
case '5':
Preview_Row5();
if (SW_FW_R == HIGH){
Right_Row5();
}
else if (SW_BK_L == HIGH){
Left_Row5();
}
break;
case '6':
Preview_Row6();
if (SW_FW_R == HIGH){
Right_Row6();
}
else if (SW_BK_L == HIGH){
Left_Row6();
}
break;
case 'A':
Preview_ColA();
if (SW_FW_R == HIGH){
Up_ColA();
}
else if (SW_BK_L == HIGH){
Down_ColA();
}
break;
case 'B':
Preview_ColB();
if (SW_FW_R == HIGH){
Up_ColB();
}
else if (SW_BK_L == HIGH){
Down_ColB();
}
break;
case 'C':
Preview_ColC();
if (SW_FW_R == HIGH){
Up_ColC();
}
else if (SW_BK_L == HIGH){
Down_ColC();
}
break;
case 'D':
Preview_ColD();
if (SW_FW_R == HIGH){
Up_ColD();
}
else if (SW_BK_L == HIGH){
Down_ColD();
}
break;
case 'E':
Preview_ColE();
if (SW_FW_R == HIGH){
Up_ColE();
}
else if (SW_BK_L == HIGH){
Down_ColE();
}
break;
case 'F':
Preview_ColF();
if (SW_FW_R == HIGH){
Up_ColF();
}
else if (SW_BK_L == HIGH){
Down_ColF();
}
break;
case 'G':
Preview_ColG();
if (SW_FW_R == HIGH){
Up_ColG();
}
else if (SW_BK_L == HIGH){
Down_ColG();
}
break;
case 'H':
Preview_ColH();
if (SW_FW_R == HIGH){
Up_ColH();
}
else if (SW_BK_L == HIGH){
Down_ColH();
}
break;
}
}
void updateFaces() {
strip.setPixelColor(LED_A1, RGB_A1);
strip.setPixelColor(LED_B1, RGB_B1);
strip.setPixelColor(LED_C1, RGB_C1);
strip.setPixelColor(LED_D1, RGB_D1);
strip.setPixelColor(LED_E1, RGB_E1);
strip.setPixelColor(LED_F1, RGB_F1);
strip.setPixelColor(LED_G1, RGB_G1);
strip.setPixelColor(LED_H1, RGB_H1);
strip.setPixelColor(LED_A2, RGB_A2);
strip.setPixelColor(LED_B2, RGB_B2);
strip.setPixelColor(LED_C2, RGB_C2);
strip.setPixelColor(LED_D2, RGB_D2);
strip.setPixelColor(LED_E2, RGB_E2);
strip.setPixelColor(LED_F2, RGB_F2);
strip.setPixelColor(LED_G2, RGB_G2);
strip.setPixelColor(LED_H2, RGB_H2);
strip.setPixelColor(LED_A3, RGB_A3);
strip.setPixelColor(LED_B3, RGB_B3);
strip.setPixelColor(LED_C3, RGB_C3);
strip.setPixelColor(LED_D3, RGB_D3);
strip.setPixelColor(LED_E3, RGB_E3);
strip.setPixelColor(LED_F3, RGB_F3);
strip.setPixelColor(LED_G3, RGB_G3);
strip.setPixelColor(LED_H3, RGB_H3);
strip.setPixelColor(LED_A4, RGB_A4);
strip.setPixelColor(LED_B4, RGB_B4);
strip.setPixelColor(LED_C4, RGB_C4);
strip.setPixelColor(LED_D4, RGB_D4);
strip.setPixelColor(LED_E4, RGB_E4);
strip.setPixelColor(LED_F4, RGB_F4);
strip.setPixelColor(LED_G4, RGB_G4);
strip.setPixelColor(LED_H4, RGB_H4);
strip.setPixelColor(LED_A5, RGB_A5);
strip.setPixelColor(LED_B5, RGB_B5);
strip.setPixelColor(LED_C5, RGB_C5);
strip.setPixelColor(LED_D5, RGB_D5);
strip.setPixelColor(LED_E5, RGB_E5);
strip.setPixelColor(LED_F5, RGB_F5);
strip.setPixelColor(LED_G5, RGB_G5);
strip.setPixelColor(LED_H5, RGB_H5);
strip.setPixelColor(LED_A6, RGB_A6);
strip.setPixelColor(LED_B6, RGB_B6);
strip.setPixelColor(LED_C6, RGB_C6);
strip.setPixelColor(LED_D6, RGB_D6);
strip.setPixelColor(LED_E6, RGB_E6);
strip.setPixelColor(LED_F6, RGB_F6);
strip.setPixelColor(LED_G6, RGB_G6);
strip.setPixelColor(LED_H6, RGB_H6);
strip.show(); // Update strip to match
}
void white_corners() {
RGB_E1 = white;
RGB_A3 = white;
RGB_C3 = white;
RGB_E3 = white;
RGB_G3 = white;
RGB_E5 = white;
}
void Left_Row1() {
//Save old values
uint32_t Old_RGB_E1 = RGB_E1;
uint32_t Old_RGB_F1 = RGB_F1;
uint32_t Old_RGB_A3 = RGB_A3;
uint32_t Old_RGB_A4 = RGB_A4;
uint32_t Old_RGB_B3 = RGB_B3;
uint32_t Old_RGB_B4 = RGB_B4;
uint32_t Old_RGB_C3 = RGB_C3;
uint32_t Old_RGB_C4 = RGB_C4;
uint32_t Old_RGB_E6 = RGB_E6;
uint32_t Old_RGB_F6 = RGB_F6;
uint32_t Old_RGB_H3 = RGB_H3;
uint32_t Old_RGB_H4 = RGB_H4;
//Rotate back face CW
RGB_A3 = Old_RGB_A4;
RGB_B3 = Old_RGB_A3;
RGB_B4 = Old_RGB_B3;
RGB_A4 = Old_RGB_B4;
//Shift Row 1
RGB_F1 = Old_RGB_H3;
RGB_E1 = Old_RGB_F1;
RGB_C3 = Old_RGB_E1;
RGB_C4 = Old_RGB_C3;
RGB_E6 = Old_RGB_C4;
RGB_F6 = Old_RGB_E6;
RGB_H4 = Old_RGB_F6;
RGB_H3 = Old_RGB_H4;
}
void Right_Row1() {
Left_Row6();
}
void Left_Row2() {
//Save old values
uint32_t Old_RGB_E2 = RGB_E2;
uint32_t Old_RGB_F2 = RGB_F2;
uint32_t Old_RGB_E3 = RGB_E3;
uint32_t Old_RGB_E4 = RGB_E4;
uint32_t Old_RGB_F3 = RGB_F3;
uint32_t Old_RGB_F4 = RGB_F4;
uint32_t Old_RGB_D3 = RGB_D3;
uint32_t Old_RGB_D4 = RGB_D4;
uint32_t Old_RGB_E5 = RGB_E5;
uint32_t Old_RGB_F5 = RGB_F5;
uint32_t Old_RGB_G3 = RGB_G3;
uint32_t Old_RGB_G4 = RGB_G4;
//Rotate front face CCW
RGB_E3 = Old_RGB_F3;
RGB_E4 = Old_RGB_E3;
RGB_F4 = Old_RGB_E4;
RGB_F3 = Old_RGB_F4;
//Shift Row 2
RGB_F2 = Old_RGB_G3;
RGB_E2 = Old_RGB_F2;
RGB_D3 = Old_RGB_E2;
RGB_D4 = Old_RGB_D3;
RGB_E5 = Old_RGB_D4;
RGB_F5 = Old_RGB_E5;
RGB_G4 = Old_RGB_F5;
RGB_G3 = Old_RGB_G4;
}
void Right_Row2() {
Left_Row5();
}
void Left_Row3() {
//Save old values
uint32_t Old_RGB_E1 = RGB_E1;
uint32_t Old_RGB_F1 = RGB_F1;
uint32_t Old_RGB_E2 = RGB_E2;
uint32_t Old_RGB_F2 = RGB_F2;
uint32_t Old_RGB_A3 = RGB_A3;
uint32_t Old_RGB_B3 = RGB_B3;
uint32_t Old_RGB_C3 = RGB_C3;
uint32_t Old_RGB_D3 = RGB_D3;
uint32_t Old_RGB_E3 = RGB_E3;
uint32_t Old_RGB_F3 = RGB_F3;
uint32_t Old_RGB_G3 = RGB_G3;
uint32_t Old_RGB_H3 = RGB_H3;
//Rotate top face CW
RGB_E1 = Old_RGB_E2;
RGB_F1 = Old_RGB_E1;
RGB_F2 = Old_RGB_F1;
RGB_E2 = Old_RGB_F2;
//Shift Row 3
RGB_A3 = Old_RGB_B3;
RGB_B3 = Old_RGB_C3;
RGB_C3 = Old_RGB_D3;
RGB_D3 = Old_RGB_E3;
RGB_E3 = Old_RGB_F3;
RGB_F3 = Old_RGB_G3;
RGB_G3 = Old_RGB_H3;
RGB_H3 = Old_RGB_A3;
}
void Right_Row3() {
//Save old values
uint32_t Old_RGB_E1 = RGB_E1;
uint32_t Old_RGB_F1 = RGB_F1;
uint32_t Old_RGB_E2 = RGB_E2;
uint32_t Old_RGB_F2 = RGB_F2;
uint32_t Old_RGB_A3 = RGB_A3;
uint32_t Old_RGB_B3 = RGB_B3;
uint32_t Old_RGB_C3 = RGB_C3;
uint32_t Old_RGB_D3 = RGB_D3;
uint32_t Old_RGB_E3 = RGB_E3;
uint32_t Old_RGB_F3 = RGB_F3;
uint32_t Old_RGB_G3 = RGB_G3;
uint32_t Old_RGB_H3 = RGB_H3;
//Rotate top face CCW
RGB_E1 = Old_RGB_F1;
RGB_F1 = Old_RGB_F2;
RGB_F2 = Old_RGB_E2;
RGB_E2 = Old_RGB_E1;
//Shift Row 3 right
RGB_A3 = Old_RGB_H3;
RGB_B3 = Old_RGB_A3;
RGB_C3 = Old_RGB_B3;
RGB_D3 = Old_RGB_C3;
RGB_E3 = Old_RGB_D3;
RGB_F3 = Old_RGB_E3;
RGB_G3 = Old_RGB_F3;
RGB_H3 = Old_RGB_G3;
}
void Left_Row4() {
//Save old values
uint32_t Old_RGB_A4 = RGB_A4;
uint32_t Old_RGB_B4 = RGB_B4;
uint32_t Old_RGB_C4 = RGB_C4;
uint32_t Old_RGB_D4 = RGB_D4;
uint32_t Old_RGB_E4 = RGB_E4;
uint32_t Old_RGB_F4 = RGB_F4;
uint32_t Old_RGB_G4 = RGB_G4;
uint32_t Old_RGB_H4 = RGB_H4;
uint32_t Old_RGB_E5 = RGB_E5;
uint32_t Old_RGB_E6 = RGB_E6;
uint32_t Old_RGB_F5 = RGB_F5;
uint32_t Old_RGB_F6 = RGB_F6;
//Rotate bottom face CCW
RGB_E5 = Old_RGB_F5;
RGB_F5 = Old_RGB_F6;
RGB_F6 = Old_RGB_E6;
RGB_E6 = Old_RGB_E5;
//Shift Row 4
RGB_A4 = Old_RGB_B4;
RGB_B4 = Old_RGB_C4;
RGB_C4 = Old_RGB_D4;
RGB_D4 = Old_RGB_E4;
RGB_E4 = Old_RGB_F4;
RGB_F4 = Old_RGB_G4;
RGB_G4 = Old_RGB_H4;
RGB_H4 = Old_RGB_A4;
}
void Right_Row4() {
//Save old values
uint32_t Old_RGB_A4 = RGB_A4;
uint32_t Old_RGB_B4 = RGB_B4;
uint32_t Old_RGB_C4 = RGB_C4;
uint32_t Old_RGB_D4 = RGB_D4;
uint32_t Old_RGB_E4 = RGB_E4;
uint32_t Old_RGB_F4 = RGB_F4;
uint32_t Old_RGB_G4 = RGB_G4;
uint32_t Old_RGB_H4 = RGB_H4;
uint32_t Old_RGB_E5 = RGB_E5;
uint32_t Old_RGB_E6 = RGB_E6;
uint32_t Old_RGB_F5 = RGB_F5;
uint32_t Old_RGB_F6 = RGB_F6;
//Rotate bottom face CW
RGB_E5 = Old_RGB_E6;
RGB_F5 = Old_RGB_E5;
RGB_F6 = Old_RGB_F5;
RGB_E6 = Old_RGB_F6;
//Shift Row 4 right
RGB_A4 = Old_RGB_H4;
RGB_B4 = Old_RGB_A4;
RGB_C4 = Old_RGB_B4;
RGB_D4 = Old_RGB_C4;
RGB_E4 = Old_RGB_D4;
RGB_F4 = Old_RGB_E4;
RGB_G4 = Old_RGB_F4;
RGB_H4 = Old_RGB_G4;
}
void Left_Row5() {
//Save old values
uint32_t Old_RGB_E2 = RGB_E2;
uint32_t Old_RGB_F2 = RGB_F2;
uint32_t Old_RGB_E3 = RGB_E3;
uint32_t Old_RGB_E4 = RGB_E4;
uint32_t Old_RGB_F3 = RGB_F3;
uint32_t Old_RGB_F4 = RGB_F4;
uint32_t Old_RGB_D3 = RGB_D3;
uint32_t Old_RGB_D4 = RGB_D4;
uint32_t Old_RGB_E5 = RGB_E5;
uint32_t Old_RGB_F5 = RGB_F5;
uint32_t Old_RGB_G3 = RGB_G3;
uint32_t Old_RGB_G4 = RGB_G4;
//Rotate front face CW
RGB_E3 = Old_RGB_E4;
RGB_E4 = Old_RGB_F4;
RGB_F4 = Old_RGB_F3;
RGB_F3 = Old_RGB_E3;
//Shift Row 2
RGB_F2 = Old_RGB_E2;
RGB_E2 = Old_RGB_D3;
RGB_D3 = Old_RGB_D4;
RGB_D4 = Old_RGB_E5;
RGB_E5 = Old_RGB_F5;
RGB_F5 = Old_RGB_G4;
RGB_G4 = Old_RGB_G3;
RGB_G3 = Old_RGB_F2;
}
void Right_Row5() {
Left_Row2();
}
void Left_Row6() {
//Save old values
uint32_t Old_RGB_E1 = RGB_E1;
uint32_t Old_RGB_F1 = RGB_F1;
uint32_t Old_RGB_A3 = RGB_A3;
uint32_t Old_RGB_A4 = RGB_A4;
uint32_t Old_RGB_B3 = RGB_B3;
uint32_t Old_RGB_B4 = RGB_B4;
uint32_t Old_RGB_C3 = RGB_C3;
uint32_t Old_RGB_C4 = RGB_C4;
uint32_t Old_RGB_E6 = RGB_E6;
uint32_t Old_RGB_F6 = RGB_F6;
uint32_t Old_RGB_H3 = RGB_H3;
uint32_t Old_RGB_H4 = RGB_H4;
//Rotate back face CCW
RGB_A3 = Old_RGB_B3;
RGB_B3 = Old_RGB_B4;
RGB_B4 = Old_RGB_A4;
RGB_A4 = Old_RGB_A3;
//Shift Row 6
RGB_F1 = Old_RGB_E1;
RGB_E1 = Old_RGB_C3;
RGB_C3 = Old_RGB_C4;
RGB_C4 = Old_RGB_E6;
RGB_E6 = Old_RGB_F6;
RGB_F6 = Old_RGB_H4;
RGB_H4 = Old_RGB_H3;
RGB_H3 = Old_RGB_F1;
}
void Right_Row6() {
Left_Row1();
}
void Up_ColA() {
//Same as Col F down
//Save old values
uint32_t Old_RGB_A3 = RGB_A3;
uint32_t Old_RGB_A4 = RGB_A4;
uint32_t Old_RGB_G3 = RGB_G3;
uint32_t Old_RGB_G4 = RGB_G4;
uint32_t Old_RGB_H3 = RGB_H3;
uint32_t Old_RGB_H4 = RGB_H4;
uint32_t Old_RGB_F1 = RGB_F1;
uint32_t Old_RGB_F2 = RGB_F2;
uint32_t Old_RGB_F3 = RGB_F3;
uint32_t Old_RGB_F4 = RGB_F4;
uint32_t Old_RGB_F5 = RGB_F5;
uint32_t Old_RGB_F6 = RGB_F6;
//Rotate right face CCW
RGB_G3 = Old_RGB_H3;
RGB_H3 = Old_RGB_H4;
RGB_H4 = Old_RGB_G4;
RGB_G4 = Old_RGB_G3;
//Shift column A up
RGB_A3 = Old_RGB_A4;
RGB_A4 = Old_RGB_F6;
//Shift column F down
RGB_F1 = Old_RGB_A3;
RGB_F2 = Old_RGB_F1;
RGB_F3 = Old_RGB_F2;
RGB_F4 = Old_RGB_F3;
RGB_F5 = Old_RGB_F4;
RGB_F6 = Old_RGB_F5;
}
void Down_ColA() {
Up_ColF();
}
void Up_ColB() {
//Same as Col E down
//Save old values
uint32_t Old_RGB_B3 = RGB_B3;
uint32_t Old_RGB_B4 = RGB_B4;
uint32_t Old_RGB_C3 = RGB_C3;
uint32_t Old_RGB_C4 = RGB_C4;
uint32_t Old_RGB_D3 = RGB_D3;
uint32_t Old_RGB_D4 = RGB_D4;
uint32_t Old_RGB_E1 = RGB_E1;
uint32_t Old_RGB_E2 = RGB_E2;
uint32_t Old_RGB_E3 = RGB_E3;
uint32_t Old_RGB_E4 = RGB_E4;
uint32_t Old_RGB_E5 = RGB_E5;
uint32_t Old_RGB_E6 = RGB_E6;
//Rotate left face CW
RGB_D3 = Old_RGB_C3;
RGB_C3 = Old_RGB_C4;
RGB_C4 = Old_RGB_D4;
RGB_D4 = Old_RGB_D3;
//Shift column B up
RGB_B3 = Old_RGB_B4;
RGB_B4 = Old_RGB_E6;
//Shift column E down
RGB_E1 = Old_RGB_B3;
RGB_E2 = Old_RGB_E1;
RGB_E3 = Old_RGB_E2;
RGB_E4 = Old_RGB_E3;
RGB_E5 = Old_RGB_E4;
RGB_E6 = Old_RGB_E5;
}
void Down_ColB() {
Up_ColE();
}
void Up_ColC() {
Left_Row6();
}
void Down_ColC() {
Up_ColH();
}
void Up_ColD() {
Left_Row5();
}
void Down_ColD() {
Up_ColG();
}
void Up_ColE() {
//Save old values
uint32_t Old_RGB_E1 = RGB_E1;
uint32_t Old_RGB_E2 = RGB_E2;
uint32_t Old_RGB_E3 = RGB_E3;
uint32_t Old_RGB_E4 = RGB_E4;
uint32_t Old_RGB_E5 = RGB_E5;
uint32_t Old_RGB_E6 = RGB_E6;
uint32_t Old_RGB_D3 = RGB_D3;
uint32_t Old_RGB_D4 = RGB_D4;
uint32_t Old_RGB_C3 = RGB_C3;
uint32_t Old_RGB_C4 = RGB_C4;
uint32_t Old_RGB_B3 = RGB_B3;
uint32_t Old_RGB_B4 = RGB_B4;
//Rotate left face
RGB_D3 = Old_RGB_D4;
RGB_C3 = Old_RGB_D3;
RGB_C4 = Old_RGB_C3;
RGB_D4 = Old_RGB_C4;
//Shift column E up
RGB_B3 = Old_RGB_E1;
RGB_E1 = Old_RGB_E2;
RGB_E2 = Old_RGB_E3;
RGB_E3 = Old_RGB_E4;
RGB_E4 = Old_RGB_E5;
RGB_E5 = Old_RGB_E6;
RGB_E6 = Old_RGB_B4;
RGB_B4 = Old_RGB_B3;
}
void Down_ColE() {
//Save old values
uint32_t Old_RGB_E1 = RGB_E1;
uint32_t Old_RGB_E2 = RGB_E2;
uint32_t Old_RGB_E3 = RGB_E3;
uint32_t Old_RGB_E4 = RGB_E4;
uint32_t Old_RGB_E5 = RGB_E5;
uint32_t Old_RGB_E6 = RGB_E6;
uint32_t Old_RGB_D3 = RGB_D3;
uint32_t Old_RGB_D4 = RGB_D4;
uint32_t Old_RGB_C3 = RGB_C3;
uint32_t Old_RGB_C4 = RGB_C4;
uint32_t Old_RGB_B3 = RGB_B3;
uint32_t Old_RGB_B4 = RGB_B4;
//Rotate left face
RGB_D3 = Old_RGB_C3;
RGB_C3 = Old_RGB_C4;
RGB_C4 = Old_RGB_D4;
RGB_D4 = Old_RGB_D3;
//Shift column E up
RGB_B3 = Old_RGB_B4;
RGB_E1 = Old_RGB_B3;
RGB_E2 = Old_RGB_E1;
RGB_E3 = Old_RGB_E2;
RGB_E4 = Old_RGB_E3;
RGB_E5 = Old_RGB_E4;
RGB_E6 = Old_RGB_E5;
RGB_B4 = Old_RGB_E6;
}
void Up_ColF() {
//Same as down Col A
uint32_t Old_RGB_A3 = RGB_A3;
uint32_t Old_RGB_A4 = RGB_A4;
...
This file has been truncated, please download it to see its full contents.
Comments