Problema PWM Arduino

Salve, poco tempo fa avevo fatto un progetto in cui facevo lampeggiare un led RGB con effetto dissolvenza con il pin PWM di Arduino ProMini http://grobotronics.com/images/detailed/14/1100011-1.jpg, il problema è che il led RGB si accendeva con effetto dissolvenza, ma quando la luce diminuiva il led non si spegneva completamente (rimaneva leggermente acceso), volevo sapere se era un problema di Arduino ProMini, e se ne compravo un altro non accadeva più…

Questo era il codice che avovo utilizzato:

int ledP= 5;
int ledR= 9;
int ledN=6;
int tempo=100;
int fading=5;
void setup(){
  
  pinMode(ledP,OUTPUT); //P
   pinMode(ledN,OUTPUT); //N
   pinMode(ledR, OUTPUT); //R
   
   digitalWrite(ledP,LOW); //P
    digitalWrite(ledN,LOW); //N
    digitalWrite(ledR,LOW); //R
}
void loop()
{
  
  for( int P= 0; P<=255;P++) //primo >>> Blu
  {
      analogWrite(ledP,P);
      delay(fading);
  }
  delay(tempo);

for( int P2= 255; P2>0;P2--)//secondo >>> Blu2
  {
      analogWrite(ledP,P2);
      delay(fading);
  }
  //fading led verde
delay(tempo);
 
 for( int N= 0; N<=255;N++) //terzo >>> Verde
  {
      analogWrite(ledN,N);
      delay(fading);
  }
  delay(tempo);

for( int N2= 255; N2>0;N2--) //quarto >>> Verde 2
  {
      analogWrite(ledN,N2);
      delay(fading);
  }

for( int R= 0; R<=255;R++) //quinto >>> Rosso
  {
      analogWrite(ledR,R);
      delay(fading);
  }
  delay(tempo);

for( int R2= 255; R2>0;R2--) //sesto >>> Rosso 2
  {
      analogWrite(ledR,R2);
      delay(fading);
  }
}

Schema circuitale molto semplice: Avevo collegato il led RGB a delle resistenze da 100 Ohm (in questo caso il pin più lungo del led è il catodo http://pietrolodi.altervista.org/wp-content/uploads/2014/12/led-rgb2.jpg ). Grazie per il vostro aiuto :slight_smile:

Non hai detto che tipo PRO MINI (a 3.3V o a 5V): è importante per il calcolo dei resistori.

Infatti, se usi 5V i resistori devono essere calcolati in funzione della caduta di tensione dei LED (diversa per ogni colore):

Per ottenere 20mA di corrente (il massimo per un LED normale) a 5V:

Vf R
Rosso 1.8V 160 ohm
Verde 2.0V 150
Blu 3.0V 100

Per ottenere lo spegnimento completo del PWM occorre fornire 0 al suo valore:

analogWrite(ledR, 0);

Ad esempio, il secondo loop del tuo sketch non arriverà mai a 0 ma si fermerà ad 1 (P2>0)

for (int P2 = 255; P2 > 0; P2 --) //secondo >>> Blu2

Esatto.