Subversion Repositories Code-Repo

Compare Revisions

Ignore whitespace Rev 215 → Rev 216

/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