Salut,
Au lieu d'utiliser un ULN2803 tu devrais utiliser un (ou deux) TLC5940 (16 sorties PWM 12bits (0 a 4095) sous 17volts max).
Les sorties PWM d'un Arduino sont en 8bits (0 a 255).
C'est un tout petit peu plus complexe à câbler mais le résultat est la.
J'utilise un Arduino, deux TLC5940 et des rubans de LED 12Volts (résistances intégrées) a anode commune.
Le genre de Strip LED RGB 5050 que l'on trouve partout sur Ebay. J'ai pris des waterproofs.
Bon c'est sur il faut les couper et souder quelques fils.
Le mien possède 60 LED RGB par mètre.
Pour le moment j'utilise que 8 morceaux de 10cm soit 6 LED par morceau
Avec 2 TLC5940 on peu contrôler 10 rubans.
J'ai fait quelques relevés au voltmètre et avec une alimentation de 12.2V j'ai 12.0V sur les LED.
Elles sont allumées a 100%, même intensité lumineuse que si je les alimente en direct.
Une SMD RGB 5050 consomme 20mA soit environ 6mA par couleur.
Mes morceaux de ruban possèdent 6 LED soit 6*6ma (36mA).
Les sorties du TLC5940 tolèrent jusque 120mA
Théoriquement, avec 1 TLC5940 tu peux contrôler 5 rubans de LED de 30/35cm (18/21LED).
Jeux peux pas te garantir que ca va pas chauffer avec des morceaux de plus de 10cm.
Certain on des problèmes de chauffe avec les TLC5940 mais c'est pas mon cas.
Les 120mA par sortie sont garanti pour du 5V je crois, je sais pas si c'est le cas pour du 12V.
Voila ce que ca donne :
Si tu veux des infos sur le TLC5940 :
http://www.zem.fr/comprendre-le-composant-tcl5940-multiplexeur-pwn/