Hi Paul,
Thanks for your reply, I tried 10K on the base of the red and green transistors but it made no difference whatsoever.
Here's the cricuit

And here's the sketch
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
// 2017.04.09
// inverter a função de output, os leds com os transistores PNP são invertidos
// portanto o reverse pwm fica direito.
/*
N/C PB5 [1]-\/-[8] GND
N/C PB3 [2] [7] PB2 -> BUTTON
BLUE <- PB4 [3] [6] PB1 -> GREEN
vcc [4]____[5] PB0 -> RED
*/
// ATtiny85 outputs
const int Red = 0;
const int Green = 1;
const int Blue = 2;
volatile uint8_t* Port[] = {&OCR0A, &OCR0B, &OCR1B};
int Pin[] = {0, 1, 4};
byte C=1, lastC=1;
unsigned long lastPress=0UL;
unsigned long lastChange=0UL;
//unsigned long autoChangeDelay=180000UL; // 3*60*1000 - 3 minutos
unsigned long autoChangeDelay=30000UL;
const byte cor[9][3]={
{ 0, 0, 0 }, // off
{ 255, 0, 0 }, // vermelho
{ 255, 4, 0 }, // laranja
{ 255, 20, 0 }, // amarelo
{ 0, 255, 0 }, // verde
{ 0, 0, 255 }, // azul
{ 34, 0, 64 }, // indigo
{ 139, 0, 100 }, // violeta
{ 255, 255, 255} // branco
};
// 3 PWM code from http://www.technoblogy.com/show?LE0
void setup() {
pinMode(Pin[Red], OUTPUT);
pinMode(Pin[Green], OUTPUT);
pinMode(Pin[Blue], OUTPUT);
pinMode(SW,INPUT);
// Configure counter/timer0 for fast PWM on PB0 and PB1
TCCR0A = 3<<COM0A0 | 3<<COM0B0 | 3<<WGM00;
TCCR0B = 0<<WGM02 | 3<<CS00; // Optional; already set
// Configure counter/timer1 for fast PWM on PB4
GTCCR = 1<<PWM1B | 3<<COM1B0;
TCCR1 = 3<<COM1A0 | 7<<CS10;
rgb(50,0,0);
_delay_ms(5000);
rgb(0,0,0);
attachInterrupt(0, nextColor, FALLING);
}
// if button was pressed set C to the next color
void nextColor()
{
unsigned long now;
now=millis();
if(now<(lastPress+1000UL)) return;
lastPress=now;
C++;
if(C>8) C=0;
}
void loop() {
unsigned long X;
X=millis();
if(C!=lastC && X>(lastChange+500UL))
{
lastC=C;
rgb(cor[C][0], cor[C][1], cor[C][2]);
lastChange=X;
}
if(X>(lastChange+autoChangeDelay))
{
C++;
if(C>8) C=0;
lastChange=millis();
}
}
// Sets colour Red=0 Green=1 Blue=2 to specified intensity 0 (off) to 255 (max)
void SetColour (int colour, int intensity) {
// *Port[colour] = 255 - intensity;
*Port[colour] = intensity; // com os transistores PNP é invertido
}
void rgb(int rr, int gg, int bb)
{
SetColour(Red, rr);
SetColour(Green, gg);
SetColour(Blue, bb);
}