2014年10月17日 星期五

TLC5940 PWM Driver

TLC5940 PWM Driver

Views: 7972 Difficulty: 3 Status: Complete
Screen_shot_2012-10-08_at_2.05.45_pm
 Think of it like a shift register for Pulse Width Modulation (PWM).
 The TLC5940 chip allows you to drive 16 Pulse Width Modulation PWM pins from 1 PWM and 4 control lines. Sort of like a serial-in, parallel out shift register, the TLC5940 gives 16 12-channel PWM outputs using only 5 lines on the microcontroller. We use these chips in our RGB flower necklace, to light up vibrant rainbow color around your sweetheart's clavicle. There is a great library to control these chips available for arduino. Another nice feature of these chips is they allow daisy-chaining. Want to see a tutorial about daisy-chaining TLC5940's? Let us know in the comments!

TLC5940 Nightlight 3

Tlc5940_nitelight3
 TLC5940 Nightlight 3

TLC5940 Driver and Module Video

 Video demonstrating 4 TLC5940 modules being driven by an Arduino clone. As the potentiometer spins the speed of the rainbow changes. The second part of the video shows the tree PCB with its 16 LEDs also powered by a TLC5940.

Code

 This code uses the TLC5940 arduino library available here. It also uses our arduino color library available here. The code outputs a rainbow to five RGB LEDs hooked up to the TLC5940.
/* LucidTronix HSB RGB necklace
 * uses TLC5940 chip. for details see:
 * http://www.lucidtronix.com/tutorials/6
 * Control rgb color by specifying
 * Hue saturation and brightness.
 * This code shows a rainbow.
 * It is okay to daiy-chain the chips
 * just change the NUM_TLCS constant
 * in the Tlc5940.h file.
 * This code uses an arduino color library
 * available here:
 * http://www.lucidtronix.com/tutorials/19
 */
#include "Tlc5940.h"
#include "tlc_fades.h"
#include "color.h"
// how many millis to strobe over all the LEDs

TLC_CHANNEL_TYPE channel;

Color cur_color(1,1,1);
int scope_period = (200 * NUM_TLCS);
int led_period = scope_period / (NUM_TLCS * 16);
float hue = 0;

void setup()
{
  Tlc.init();
}

void loop()
{
  hue += 0.001;
  if ( hue >=1 ) hue = 0;
  float sat = 1.0;
  float val = 0.5;
  cur_color.convert_hcl_to_rgb(hue,sat,val);

  
  uint32_t lastMillis = millis();
  int cur_val = channel % 3;
  int color_component = 0;
  if ( cur_val == 0) color_component = cur_color.red*16;
  else if  ( cur_val == 1) color_component = cur_color.green*16;
  else if ( cur_val == 2) color_component = cur_color.blue*16;
  tlc_addFade(channel,                      // led channel
              color_component,   // start fade value (0-4095)
              color_component,                            // end fade value (0-4095)
              lastMillis + 2,               // start millis
              lastMillis + (uint16_t)scope_period / 4  // end millis
             );
  if (channel++ == NUM_TLCS * 16) {
    channel = 0;
  }
  uint32_t currentMillis;
  do {
    currentMillis = millis();
    tlc_updateFades(currentMillis);
  } while (currentMillis - lastMillis <= led_period);
}

Parts

TitleDescription#CostLinkPicture
TLC5940IC LED DRIVER PWM CONTROL 32-QFN Value: 3 V ~ 5.5 V1$3.37LinkScreen_shot_2012-12-28_at_7.34.51_pm
ATMEGA168A-AUIC MCU AVR 16K FLASH 32TQFP Value: 1.8 V ~ 5.5 V 20MHz1$2.43LinkScreen_shot_2012-12-28_at_7.31.53_pm
PotentiometerPOT ROTARY, Linear 10K OHM 9MM SNAPIN Value: 10k1$0.76LinkScreen_shot_2012-12-28_at_7.41.04_pm
RGB LEDLED RGB SMD DIFF 4-PLCC Value: 1.9V Red, 3V Green, 3V Blue5$0.55LinkClvba-fka
SwitchSWITCH SLIDE DPDT 6VDC 0.3A SMT Value: DPDT1$0.44LinkMfg_js202011scqn
LED SMDLED 3X1.5MM 568NM Green Clear SMD Value: 2.2V Green16$0.18LinkApl3015sgc-f01
Button 6mm Through HoleTactile Switch Through Hole SPST-NO 0.05A 12V Value: 0.05A @ 12VDC2$0.1LinkScreen_shot_2012-12-28_at_7.41.40_pm
Permalink: http://lucidtronix.com/tutorials/4
Rainbow flower necklace using the TLC5940....
RGB Flashlight, wearable sound art, rainbow lamp....
Wearable digital compass displays the direction in green LEDs....
32 buttons for a fully-functioning hand-held USB keyboard....
Write messages on Liquid Crystal Displays with potentiometers or keyboards....
Control a 120v outlet with a 5V arduino....
Handheld gaming machine, based on the Arduino Leonardo, equipped with joystick, SD card and more....
An arduino library for the MMA8453 Triple Axis Accelerometer...

沒有留言:

張貼留言

Node-Red Dashboard UI Template + AngularJS 參考 AngularJS教學 --3

  Node-Red Dashboard UI Template + AngularJS 參考 AngularJS教學 --3 AngularJS 實例 <!DOCTYPE html> <html> <head> <meta charse...