/PIC Stuff/Cerebot_32MX7_LED_Cube/CUBE.c |
---|
820,8 → 820,8 |
case CUBE_COMMAND_SET_PIXEL: |
Cube_Set_Pixel(frame[0], frame[1], frame[2], frame[3], frame[4], frame[5]); |
break; |
case CUBE_COMMAND_SET_LAYER: |
Cube_Data_Direct_Write(frame[0], &frame[1]); |
case CUBE_COMMAND_SET_ALL: |
Cube_Data_Direct_Write_All(&frame[0]); |
break; |
case CUBE_COMMAND_START_TEXT: |
Cube_Text_Init(&frame[3], cube_data_ptr->frame_length - 4, frame[0], frame[1], frame[2]); |
836,9 → 836,6 |
} |
} |
void Cube_Data_Direct_Write(char layer, char *buffer) { |
int i; |
for (i = 0; i < GCS_LAYER_SIZE; i++) { |
cube_data_ptr->GCS[layer][i] = buffer[i]; |
} |
void Cube_Data_Direct_Write_All(char *buffer) { |
memcpy(cube_data_ptr->GCS, buffer, CUBE_LAYER_COUNT * GCS_LAYER_SIZE); |
} |
/PIC Stuff/Cerebot_32MX7_LED_Cube/CUBE.h |
---|
40,7 → 40,7 |
#define CUBE_STRING_MAX_LENGTH 32 |
// Data Streaming In Buffer Size |
#define CUBE_FRAME_BUFFER_SIZE 600 |
#define CUBE_FRAME_BUFFER_SIZE 3000 |
#define CUBE_START_CHAR 0x7E |
#define CUBE_ESCAPE_CHAR 0x7D |
#define CUBE_ESCAPE_XOR 0x20 |
49,7 → 49,7 |
#define CUBE_COMMAND_SET_BC 0x0A // [Brightness Value] |
#define CUBE_COMMAND_CLEAR 0x0B // (no data) |
#define CUBE_COMMAND_SET_PIXEL 0x10 // [Layer, Row, Column, R, G, B] |
#define CUBE_COMMAND_SET_LAYER 0x11 // [Layer, R1, G1, B1, R2, ...] |
#define CUBE_COMMAND_SET_ALL 0x11 // [R1, G1, B1, R2, ...] |
#define CUBE_COMMAND_START_TEXT 0x20 // [R, G, B, Char1, Char2, Char3, ...] |
#define CUBE_COMMAND_STOP_TEXT 0x21 // (no data) |
119,7 → 119,7 |
// Data stream in control functions |
void Cube_Data_In(char c); |
void Cube_Data_In_Process_Frame(void); |
void Cube_Data_Direct_Write(char layer, char *buffer); |
void Cube_Data_Direct_Write_All(char *buffer); |
#endif /* CUBE_H */ |
/PIC Stuff/Cerebot_32MX7_LED_Cube/CubeInterface.py |
---|
254,7 → 254,4 |
'''Write the local buffer to the cube.''' |
def Cube_Update(): |
offset = 0 |
for layer in range(CUBE_LAYER_COUNT): |
serial_port.write(CMD_Set_Layer(layer, cube_buffer[offset:offset+GCS_LAYER_SIZE])) |
offset += GCS_LAYER_SIZE |
serial_port.write(CMD_Set_All(cube_buffer)) |
/PIC Stuff/Cerebot_32MX7_LED_Cube/CubeMain.py |
---|
2,12 → 2,61 |
from CubeRawCommands import * |
from CubeInterface import * |
def Animation_Row_Column_Sweep(iterations, delay): |
for z in range(iterations): |
for i in range(3): |
for j in range(CUBE_ROW_COUNT): |
Cube_Clear(); |
for k in range(CUBE_COLUMN_COUNT): |
if (i % 3 == 0): |
for a in range(CUBE_LAYER_COUNT): |
Cube_Set_Pixel(a,j,k,0xFF,0x00,0x00) |
elif (i % 3 == 1): |
for a in range(CUBE_LAYER_COUNT): |
Cube_Set_Pixel(a,j,k,0x00,0xFF,0x00) |
else: |
for a in range(CUBE_LAYER_COUNT): |
Cube_Set_Pixel(a,j,k,0x00,0x00,0xFF) |
Cube_Update() |
time.sleep(delay) |
for j in range(CUBE_ROW_COUNT): |
Cube_Clear(); |
for k in range(CUBE_COLUMN_COUNT): |
if (i % 3 == 0): |
for a in range(CUBE_LAYER_COUNT): |
Cube_Set_Pixel(a,k,j,0xFF,0x00,0x00) |
elif (i % 3 == 1): |
for a in range(CUBE_LAYER_COUNT): |
Cube_Set_Pixel(a,k,j,0x00,0xFF,0x00) |
else: |
for a in range(CUBE_LAYER_COUNT): |
Cube_Set_Pixel(a,k,j,0x00,0x00,0xFF) |
Cube_Update() |
time.sleep(delay) |
for j in range(CUBE_LAYER_COUNT-1, -1, -1): |
Cube_Clear(); |
if (i % 3 == 0): |
for k in range(CUBE_LAYER_COUNT): |
if (k == j): |
for x in range(CUBE_ROW_COUNT): |
for y in range(CUBE_COLUMN_COUNT): |
Cube_Set_Pixel(k,x,y,0xFF,0x00,0x00) |
elif (i % 3 == 1): |
for k in range(CUBE_LAYER_COUNT): |
if (k == j): |
for x in range(CUBE_ROW_COUNT): |
for y in range(CUBE_COLUMN_COUNT): |
Cube_Set_Pixel(k,x,y,0x00,0xFF,0x00) |
else: |
for k in range(CUBE_LAYER_COUNT): |
if (k == j): |
for x in range(CUBE_ROW_COUNT): |
for y in range(CUBE_COLUMN_COUNT): |
Cube_Set_Pixel(k,x,y,0x00,0x00,0xFF) |
Cube_Update() |
time.sleep(delay) |
if __name__ == '__main__': |
Cube_Init('COM11', 115200) |
Cube_Init('COM11', 256000) |
Cube_Clear() |
Cube_Set_Pixel(0,0,0,0xFFF,0xFFF,0xFFF) |
Cube_Set_Pixel(1,0,0,0xFFF,0x000,0x000) |
Cube_Set_Pixel(0,1,0,0x000,0xFFF,0x000) |
Cube_Set_Pixel(0,0,1,0x000,0x000,0xFFF) |
Cube_Update() |
Animation_Row_Column_Sweep(3,0) |
/PIC Stuff/Cerebot_32MX7_LED_Cube/CubeRawCommands.py |
---|
16,10 → 16,9 |
barray.extend([Calculate_Checksum(barray)]) |
return barray |
'''Generates the command for setting an entire layer.''' |
def CMD_Set_Layer(layer, leds): |
barray = bytearray.fromhex('7E 01 22 11') |
barray.extend([layer]) |
'''Generates the command for setting the entire cube.''' |
def CMD_Set_All(leds): |
barray = bytearray.fromhex('7E 09 01 11') |
barray.extend(leds) |
barray.extend([Calculate_Checksum(barray)]) |
return barray |
/PIC Stuff/Cerebot_32MX7_LED_Cube/UART1.c |
---|
28,9 → 28,15 |
IFS0CLR = 0x1C000000; // Clear any existing events |
IPC6SET = 0x00000009; // Set Priority = 2, Subpriority = 1 |
U1MODE = 0x00008000; // UART enabled, BRGH = 0 |
U1MODE = 0x00008008; // UART enabled, BRGH = 1 |
U1STA = 0x00009400; // TX interrupt on buffer empty, RX interrupt on buffer not empty |
U1BRG = 42; // Set baud rate to 115200 @ 80MHz |
// U1BRG = 173; // Set baud rate to 115200 @ 80MHz (0.22% error) |
U1BRG = 86; // Set baud rate to 230400 @ 80MHz (0.22% error) |
// U1BRG = 77; // Set baud rate to 256000 @ 80MHz (0.12% error) |
// U1BRG = 42; // Set baud rate to 460800 @ 80MHz (0.94% error) |
// U1BRG = 21; // Set baud rate to 921600 @ 80MHz (1.36% error) |
IEC0SET = 0x0C000000; // Enable the RX and Error interrupts |
INTEnableInterrupts(); |
/PIC Stuff/Cerebot_32MX7_LED_Cube/defines.h |
---|
1,8 → 1,8 |
// PIC32MX795F512L |
// Uncomment ONE of the following: |
//#define CEREBOT_32MX7 |
#define CEREBOT_MX7CK |
#define CEREBOT_32MX7 |
// #define CEREBOT_MX7CK |
// Power supply must be 5V for proper operation of the board! |
/PIC Stuff/Cerebot_32MX7_LED_Cube/main.c |
---|
130,9 → 130,9 |
// UART1_Write(start_text, 18); |
// Set the overlay text |
// char text_string[] = "Welcome to the CCM Lab "; |
// Cube_Text_Init(text_string, 26, 0xFF, 0xFF, 0xFF); |
// TIMER4_Start(); |
char text_string[] = "Welcome to the CCM Lab "; |
Cube_Text_Init(text_string, 26, 0xFF, 0xFF, 0xFF); |
TIMER4_Start(); |
// Loop through some preset animations |
while(1) { |
140,10 → 140,10 |
// Animation_Layer_Alternate(2,300); |
// Animation_Pixel_Alternate(1,200); |
// Animation_Full_Color_Sweep(2,1000); |
// Animation_Row_Column_Sweep(2,40); |
// Animation_Cube_In_Cube(4,300); |
// Animation_Double_Rotation(2,40); |
// Animation_Pseudo_Random_Colors(10,300); |
Animation_Row_Column_Sweep(2,40); |
Animation_Cube_In_Cube(4,300); |
Animation_Double_Rotation(2,40); |
Animation_Pseudo_Random_Colors(10,300); |
// Animation_Random_Colors(10,300); |
} |
} |
/PIC Stuff/Cerebot_32MX7_LED_Cube/nbproject/Makefile-genesis.properties |
---|
1,5 → 1,5 |
# |
#Sat Aug 10 23:28:16 EDT 2013 |
#Mon Aug 12 23:04:12 EDT 2013 |
default.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=6b4fa04caf3910c7c3a4666b1aea8c5c |
default.languagetoolchain.dir=C\:\\Program Files (x86)\\Microchip\\xc32\\v1.20\\bin |
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=415494acd195d89b2f6d7a36797a5ab4 |