125 red LEDs arranged in a cube, thats my 5x5x5 LED Cube. It connects to a computer using USB and has 2kB of internal EEPROM memory, where it stores visual sequences. If powered alone, it plays the sequence stored in the internal memory. If connected to a pc, you can play a sequence directly (through a USB) and optionally store it into the cube's memory. Each 18-byte frame in the sequence consists of 125 bits of data information (125 led states) and a 16 bits of delay. The 2kB internal memory can therefore hold a maximum of 113 frames.
The main part is an Atmega162 microcontroller and 2kB I2C EEPROM - 24LC16B. Atmega162 doesn't have a hardware I2C interface, so it uses software I2C from www.eXtremeElectronics.co.in to communicate with the EEPROM. For a USB communication with pc it uses CDC-232 and V-USB library and a custom made (simple) protocol.
LEDs are connected in a matrix of 5 layers an 25 columns, so just 30 I/O pins of Atmega162 are used for driving the 125 leds of the cube. Remaining pins are used for USB and I2C communication.
Host software is written in Qt Creator. For communication with the cube it uses qextserialport library. In the application you create video sequences by typing specific commands, it's a simple scripting language similar to the one in plotter project. You can play them directly or store them into the internal EEPROM memory.
Firmware for Atmega162, schematics and source code of the host application are here.
Copyright © 2020 Jiri Stepanovsky. All Rights Reserved.