LED Cube/Custom Programs

Aus Wiki CCC Göttingen
Wechseln zu: Navigation, Suche

This page introduces you to the software section of the LED Cube. It specifically shows you how you can write your own programs, for example if you do not want to use the pattern program or require additional functionality. This page assumes some basic knowledge about the C programming language and how to use a shell. It does not assume knowledge about the microcontroller architecture or the toolchain.

However, we are not taking care about how this works with Windows. If you want to use Windows anyway, you can figure it out by yourself (yes, it is possible) or get a decent operating system.


First of all, you need an AVR Toolchain. You can skip installing avrdude if you do not have a programmer and want to update the program using the bootloader, which is probably what you want. This provides you with

  • avr-gcc: The C compiler for AVR microcontrollers
  • avr-libc: The C standard library for AVR microcontrollers
  • avr-binutils: Various tools for manipulating and working with outputs from avr-gcc

Also, you need the bootloader utility. To get this, you should follow the section Building the Bootloader Application from Building From Source. This time you can skip this step if you are using an external programmer. But this is probably not what you want. After following that step, you have an application called bootloadHID. This is used to update the firmware of your cube.

Getting Started

So, let's now create a first program. This will not do very much: It will simply light up the center LED of the cube - all the time.

// This includes the definitions for DDRC, DDRD, PC4, PD6, PORTC, PORTD:
#include <avr/io.h>

int main(void)
	DDRC |= (1 << PC4);	// {1}
	DDRD |= (1 << PD6);	// {2}

	PORTC |= (1 << PC4);	// {3}
	PORTD |= (1 << PD6);	// {4}

	while(1);		// {5}