Esta solución es totalmente discreta para minimizar el coste de las piezas. Por supuesto, requerirá más espacio en la placa de circuito impreso, y tiempo de montaje, pero también es más simple (sin i2c, sin necesidad de reloj, etc.) Los transistores discretos tomarán todo el calor de su microcontrolador PIC.
Se trata de una especie de multiplexación -- 15 pines que controlan 2 LED's cada uno, y 2 pines más para el común que usarás para encender cada grupo. Así que pondrás los pines 1-15 para los LED's 1-15, luego encenderás el común1 llevando el pin16 a V1. Los dejarás encendidos durante la mitad del tiempo (¿200ms?), y luego los apagarás poniendo el pin16 a GND o abierto. Luego pondrás los pines 1-15 para los LED's 16-30, luego encenderás el común2 llevando el pin17 a V1. Los dejarás encendidos durante la mitad del tiempo, luego los apagarás poniendo el pin17 a GND o abierto. Luego repite todo el proceso.
y cada dos siguientes LED's se ve así:
Las resistencias de 140 ohmios están calculadas para un tiempo de encendido del 100%, por lo que probablemente tendrás que ajustarlas más bien a unos 70 ohmios. R2, R7 son pullups, y R4,R9 son pull-downs, todos los cuales pueden ser opcionales dependiendo de cómo configures los pines, y las peculiaridades de tu microcontrolador. Usted puede ser capaz de conseguir transistores "digitales" con los pullups y resistencias de base integrados, posiblemente ahorrando más dinero y / o espacio en la placa. Estos Transistor PNP bipolar pre polarizado 50V 100mA 246mW SMT SOT-23-3 en Digikey cuestan 3,60 dólares, 12 céntimos cada uno en 30 unidades, e incluyen una resistencia de base de 2,2K, y una resistencia de base-emisor de 47K, integradas en el paquete, para mayor frugalidad y alegría de montaje. A 100 unidades, 7 céntimos cada una.
Yo dejaría los 2N4401 discretos (y con orificio pasante) para que puedas actualizarlos si es necesario a un 2N2222 o TO-220 si el calor es un problema (ubicación caliente, como un marcador). El calor no debería ser un problema, sin embargo - simulado y calculado como menos de 100mW en cada 2N4401.