Arduino Forum

Using Arduino => LEDs and Multiplexing => Topic started by: randonrose on May 09, 2012, 04:41 pm

Title: Driving an RGB LED strip w/ TM1803 chipset
Post by: randonrose on May 09, 2012, 04:41 pm
Hi All,

I am new to Arduino and programming, but am enjoying the great user community and support! I am using an Arduino Uno development board and am trying to interface a RGB LED strip controlled by a TM1803 control circuit to it.

The TM1803 uses a 1-wire interface to communicate with the Arduino. According to the TM1803's data sheet, I need to create a series of pulses to represent a High, Low and Reset signal.

To represent a High signal the TM1803 expects to see a signal with a period of 2.04uS and a duty cycle of 66%

To represent a Low signal the TM1803 expects to see a signal with a period of 2.04uS and a duty cycle of 33%

To represent a Reset signal the TM1803 expects to see a Low for 24uS

From how I understand the TM1803 works is that one TM1803 controls a single section of the LED strip which contains three RGB LED's. Each LED in this section has 8-bit resolution, so 8 x 3 = 24-bits per TM1803 controller. Once the 24-bits have been shifted into the TM1803 the output is latched and shifted out to the next TM1803. This output remains latched until a Reset signal is sent. 

Goal: Develop a function that I could send a Reset signal and a function that can set a 24-bit Color Value, and set the number of sections to shift out the Color Value out to.

Ex:    resetRGB();
Ex:    setRGB(color,setctions);

If anyone would have any advice on where to start or code examples to post I would be very much appreciated!

Attached is the data sheet for the TM1803