Pages: [1]   Go Down
Author Topic: MIDI Callback ( #include <MIDI.h> ) for 9 PWM LEDs with TLC5940 ?  (Read 462 times)
0 Members and 1 Guest are viewing this topic.
Berlin
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hey ,

i try to change my ControlChange Midi-Callback Script from 5 PWM LED Outs ( 1RGB LED + 2 Ultrabright white LEDs) to 9 LED PWM Outs ( for 3 RGBs )with a TLC5940.

i cant figure out what Adress for the LEDs i have to use :/

the following Code works fine for me,but how to implement the  "Tlc5940.h" library ?
ok,include,easy : #include "Tlc5940.h"
but what is the adress/port of the LEDs ( 0-15 ) now ???

or am i wrong totally ? :/ thanks and best,
erich

working code for 5 PWM LEDs with Midi Callback
Code:
#include <Wire.h>
#include <MIDI.h>

const int led1 =  3;
const int led2 =  5;
const int led3 =  9;
const int led4 =  10;
const int led5 =  11;
int brightness1 = 0;
int brightness2 = 0;
int brightness3 = 0;
int brightness4 = 0;
int brightness5 = 0;
//const int switchPin = 6; //future midi send button,not Used now.

void HandleControlChange (byte channel, byte number, byte value) {
  if (number == 3) {
    brightness1 = value;
  analogWrite(led1, brightness1);
  }
   if (number == 5) {
    brightness2 = value;
  analogWrite(led2, brightness2);
  }
    if (number == 9) {
    brightness3 = value;
  analogWrite(led3, brightness3);
  }
    if (number == 10) {
    brightness4 = value;
  analogWrite(led4, brightness4);
  }
   if (number == 11) {
    brightness5 = value;
  analogWrite(led5, brightness5);
  }
 else
{
    if (number == 23) {
    brightness1 = value;
    brightness2 = value;
    brightness3 = value;
    brightness4 = value;
    brightness5 = value;   

  analogWrite(led1, brightness1);
  analogWrite(led2, brightness2);
  analogWrite(led3, brightness3);
  analogWrite(led4, brightness4);
  analogWrite(led5, brightness5);
  }

}

void setup()
{
    pinMode(led1, OUTPUT);
    pinMode(led2, OUTPUT);
    pinMode(led3, OUTPUT);
    pinMode(led4, OUTPUT);
    pinMode(led5, OUTPUT);
                   
    MIDI.begin(MIDI_CHANNEL_OMNI);
    Serial.begin(115200);
   
    MIDI.setHandleControlChange(HandleControlChange);
}
   
void loop()
{
        MIDI.read();
}
Logged

Manchester (England England)
Online Online
Brattain Member
*****
Karma: 603
Posts: 33396
Solder is electric glue
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

The TLC5940 uses a memory buffer in the arduino. So controlling the LED is just a matter of setting the right bits in this buffer. This is made easy with a set command. Then you transfer the buffer to the chip with an update command. Look at the examples inside the libary folder.
Logged

Berlin
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Cool,thank you...
bu i still not understand how to do...could you give me another hint ?  smiley-roll-sweat

Logged

Berlin
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Got it with some help... set " Tlc.init(); " in the setup and "         Tlc.update(); " in the loop,define the LEDs with   Tlc.set(0-15, value);

Code:
#include <Wire.h>
#include <MIDI.h>
#include "Tlc5940.h"

int brightness1 = 0;
int brightness2 = 0;
int brightness3 = 0;
int brightness4 = 0;
int brightness5 = 0;
const int switchPin = 6;

void HandleControlChange (byte channel, byte number, byte value) {
  if (number == 1) {
    brightness1 = value;
  Tlc.set(1, value * 40);
  }
   if (number == 2) {
    brightness2 = value;
  Tlc.set(2, value);
  }
    if (number == 3) {
    brightness3 = value;
  Tlc.set(3, value);
  }
    if (number == 4) {
    brightness4 = value;
  Tlc.set(4, value);
  }
   if (number == 5) {
    brightness5 = value;
  Tlc.set(5, value);
  }
  if (number == 6) {
    brightness5 = value;
  Tlc.set(6, value);
  }
  if (number == 7) {
    brightness5 = value;
  Tlc.set(7, value);
  }
  if (number == 8) {
    brightness5 = value;
  Tlc.set(8, value);
  }
  if (number == 9) {
    brightness5 = value;
  Tlc.set(9, value);
  }
}

void setup()
{
    MIDI.begin(MIDI_CHANNEL_OMNI);
    Serial.begin(115200);
    MIDI.setHandleControlChange(HandleControlChange);
    Tlc.init();
}
   
void loop()
{
      Tlc.clear();
        MIDI.read();
        Tlc.update();
}
Logged

Pages: [1]   Go Up
Jump to: