LED aquarium lighting with an Arduino based PWM timer

I bought a small aquarium (54l) as an impulse buy and I needed some lights for it, so naturally I wanted to use LEDs. I also needed a timer for the lights. I also wanted the lights to fade in and out when they were going on or off as a cool effect.

I ordered four Cree XP-G R5 LEDs (cool white, apparently too warm of a light will cause algae growth) and a one amp (switching) constant current supply (with PWM support) from LED-tech.de.I had some Maxim DS3234 real-time clocks with a serial bus (SPI) which looked easy to implement so I decided to use one. I also had one spare Arduino board so that was going to be my microcontroller of choice. I used a laptop power supply as the power source.

The PCB was a pretty simple “shield” for the Arduino, just the RTC, a CR2032 coin cell battery for RTCs memory retention and thats about it. I did manage to get a couple of bugs there though as you can see from the jump wires.Communicating with the RTC was fairly straightforward. The most complex part of this project was the actual software and to make it easily configurable and work like I wanted it to. The software is configurable via USB (serial port) and you can change the time, the lighting period (how long the lights are on), the PWM speed (how long it takes for the lights to fade in/out), maximum brightness and set the time when the lights are supposed to go on. It also includes user input sanity checking and if the input makes no sense it will print a help page (with all the commands listed).