Arduino Projects

This projects started out as a simple 8x8 matrix, which is fairly simple. Using an Arduino and 2 74HC595 shift registers, I was able to acheive a very high framerate without any flicker on the LED matrix. Usually, to drive an LED matrix like this, each LED is driven one by one, resulting in 64 loops for one screen refreshment. I drive one colum at a time, resulting in 8 loops for one screen refreshment, thus the time needed for this refreshment is 8 times smaller. Also, using the regular shiftout and digitalWrite was banned from my code, since I only use low(er) level C commands, such as PORTB |= _BV(PB0) to set pin 8 at HIGH, and PORTB &= ~_BV(PB0) to set pin 8 low. This instruction needs 1/8th of the time of digitalWrite.

The result of all this experimenting led me to the idea of making a clock out of it, since 8x8 is enough pixels to display text. I also realised I was only using 5 pins of the arduino; 3 for the daisy chained shift registers, and 2 for two buttons (one to set the mode of the clock, one to switch to settings), the code only took up 7kB and the speed was only 16MHz. This mad me think of porting it to a ATtiny85, which I did. After some troubles to link the compiler correctly to the Arduino IDE, I managed to realise this idea. The alfa-stage prototype is now running on a breadboard, with this ATtiny85 and 2 74HC595's.

I couldn't resist to make a 3D render of what it should become when finished, and this step isn't far away anymore.

A friend of mine made the aluminum base, and I created a small but working protoboard, ported the source to ATtiny85, the LED's arrived yesterday, and everything is set up to be finished.

As you may have noticed here, it is already finished, code can be downloaded below.

I guess I included all header files that are needed, the other ones are from playground or standard with the arduino installation.

This is a paint/drawing program using an Arduino UNO and the MI0283QI-2 and mSD-shield from

It features different colors, different penstyles and different pensizes. i programmed a custom GUI for it so everything should fit nicely.

the program can be found below, and the libs on

This program makes it possible to print data to a virtual screen on your PC. Using the lib that comes together with it, you can simply do serialscreen.drawString("hello",10,10) and it will be printed on the virtual screen.

By now it can be used to draw strings, variables, rectangles, filled rectangles, ellipses, filled ellipses and lines (no multilines yet). All this by simply printing through the serialport. The program on the PC does all the interpreting, so you don't have to do anything!
The first program is an extremely simple setup to make a LED bar "display" the value of a resistor. It can be used with any kind of resistor, such as potentiometers, LDR's, distancesensors, temperature sensors etc. You can find a lot of programs on the internet that do the same, but with the LED being on or off, nothing inbetween them, while we can have the beauty of PWM.

Therefore I made this tiny program that translates the value (ranging from 0 to 1023) to a signal for the 6 PWM outputs.
This is a simple program i made to switch an LED on or off on the arduino, using the software to communicate.

You can see a graph of the past states of the LED, and a timer function makes it possible to keep on recording. You can also set the interval of the timer with a trackbar, so it checks every # millisec.

TI-Nspire Projects

This periodic table of the elements can easily be used. Just click on any atom you want, and the most important specifications will be shown: Atomic number, relative weight, type, ionization energy, elektronegativity, melting point, boiling point, density at 20°C, electron configuration, discovery information, number of natural isotopes, oxidation states, crystal structure, group, period and radioactivity.  The crystal structure comes with a nice 3D representation to improve the understanding. 

Osmos, a game of life. You are a cell, and you have one goal: becoming the master of your environment. Do this by completing different tasks.

These tasks are e.g. becoming the biggest of them all, another one is to absorb the Biophobes. This are AI driven cells that grow faster. This because they can 'see' their environment. When they see a smaller cell they absorb it, if a bigger one comes next to one of them, they flee.

It is my entry for the Omnimaga Contest 2012: Artificial Intelligence

More info on

view the video on the video page, or on

Arduino Projects

Nspire projects