Using BC327 instead of BC337 but not working as expected?

dtokez:
I hooked up a POT and started some serial debugging to test and the range seems pretty good in corresponding to the bulb's brightness, but I think it seems to be weighted a little towards the ON end of the spectrum - in other words it gets pretty bright to early. How could I fine tune this?

The eye does not perceive brightness linearly. So you need to change the relationship between pot setting to LED power from linear to a power law or exponential law. Currently, you are probably doig something like this:

  unsigned int potVal = analogRead(pot);
  unsigned int ledVal = potVal/4;    // convert 0..1023 from analogRead to 0..4092 for TLC5940

A very simple modification is to use square law (warning: untested code!):

  unsigned int potVal = analogRead(pot);
  unsigned int ledVal = ((unsigned long)potVal * (unsigned long)potVal)/256;    // convert 0..1023 from analogRead to 0..4092 for TLC5940

Another way is to use exponential law (warning: untested code!):

  const float factor = 0.002;  // adjust this to get required response
  unsigned int potVal = analogRead(pot);
  unsigned int ledVal = (unsigned int)(4095 * exp(potVal * factor)/exp(1023 * factor));    // convert 0..1023 from analogRead to 0..4092 for TLC5940

dtokez:
The way it is hooked up now is with 10mA current set in the TLC (20mA works just as well) and with the 337 base pulled up to 12v through a 10k. Before I go ahead and build the 12 channels on some strip board and install the lot in my lounge ceiling I'd just like to check that this would be the preferred setup if you were making the same thing?

Using a 10K pullup to +12V is a good choice, and provides 1.2mA BC337 base current. This has to be sunk by the TLC5940 to turn the transistor off. So any current setting for the TLC above 1.2mA will do.