Und wie würde man das dann am Controller per PWM anzusteuern?
Grundlegendes zur PWM:

Bei Pulsweiten Modulationen werden die angeschlossenen Verbraucher mit einem Rechtecksignal angesteuert. Die Frequenz dieses Rechtecksignals ist konstant und kann über den Vorteiler (Prescaler) eingestellt werden. Dabei wird die Frequenz so gewählt, dass das menschliche Auge kein flimmern mehr wahrnehmen kann. Der Ausgang wird nun immer kurze Zeit auf High-Pegel (eingeschalten z.B. 5V) und dann wieder auf LOW-Pegel(ausgeschalten 0V) geschalten. Die Ein- und Auschaltzeit ergeben zusammen die Periodendauer, die stets konstant bleibt. Allerdings kann nun das Verhältnis von Ein- und Auschaltzeit verändert werden.
Beispielsweise kann der Ausgang 100%(bei 8-Bit 255) der Periode eingeschalten und 0%(bei 8-Bit 0) ausgeschalten sein (die LED würde auf voller Helligkeit leuchten) oder der Ausgang kann zu 4%(bei 8-Bit 10) eingeschalten und zu 96% (bei 8-Bit 245) ausgeschalten sein (Die LED würde glimmen).

Bei den AVR's kann die Auflösung(Pulsbreite) eingestellt werden, (8-Bit,9-Bit,10-Bit). Bei 8-Bit wären also 256 verchiedene Helligkeitsstufen möglich. Bei 10-Bit 1024 Helligkeitsstufen.

Bei deiner RGB-LED hättest du nun 3 solcher Ausgäng für eine LED. Durch die verschiedenen Helligkeitstufen der einzelnen Farben in der RGB-LED würden sich nun unterschiedliche Farbtöne ergeben.

Die RGB-LED's müssen bei Hardware PWM nun an die Controller Ausgänge über einen Vorwiderstand OC0A,OC0B,OC1A,OC1B,OC2A,OC2B angeschlossen werden. Wenn die Last an den Ausgänge pro pin 40mA oder Gesamt 200mA überschreitet ist zusätzlich ein Ausgangstreiber notwendig.

In der Software müssen nun die Timer0,1,2 bei Atmega88 für den PWM-Modus konfiguriert werden.

Ein paar Hinweise wie sowas funktioniert findest du z.B. hier.

Hast du eigentlich schon Hardware womit du die Controller flashen bzw. brennen kannst?

Gruß Flo