LED RGB PICCOLA CURIOSITA'

Sto facendo un po' di sperimentazione con potenziometro e LED RGB.

Purtroppo ho notato che il led rgb del kit base non è di buona qualità ma me lo dovevo immaginare...

Altra cosa che ho notato è che mentre il blu e il verde funzionano tranquillamente per valori da 1 a 255 il led rosso si accende solo partendo da circa 130 come se la tensione applicata non fosse sufficiente.

Per non complicarmi troppo la vita ho applicato delle resistenze in serie ai catodi da 220Ohm. Non vorrei che per il rosso fosse troppo elevata e fosse la causa del problema.

La resistenza per limitare la corrente nei LED deve essere dimensionata in modo da ottenere la caduta di tensione corretta.

Ad ogni colore corrisponde una tensione diversa, ad esempio: Colore Vf Red 1.8V Green 2.0V Blue 3.0V

La formula è R = (5V - Vf) / 0.01A considerando una corrente di 10mA

Quindi per il rosso il resistore deve avere una resistenza di 320 ohm (approssimata a 330 ohm), per il verde 300 ohm e per il blu 200 ohm.

@cyberhs Pensi quindi possa essere un problema di caduta di tensione il fatto che il led rosso si accende solo a un certo punto?

Dacci un schema ( anche con carta epenna e fotografato) Ciao Uwe

Certo è possibile.

Tuttavia la percezione dell’occhio umano non risponde ai vari colori in modo uguale: riusciamo a percepire meglio il verde ed il rosso, mentre percepiamo meno il blu.

Non me ne vogliate se ho usato 123D ma non sono sul computer di casa…

Per quanto riguarda il codice

int red = 12;
int blue = 11;
int green = 10;
int potentiometer = 6;

unsigned long ValPotentiometer;
unsigned long OutputVal = 0;
unsigned long tempoMillis = 0;
unsigned long accensione = 500;

void setup() {
  // initialize the digital pin as an output.
  pinMode(red, OUTPUT);
  pinMode (blue, OUTPUT);
  pinMode (green, OUTPUT);
}


void loop() {
 ValPotentiometer = analogRead (potentiometer);
  OutputVal = map(ValPotentiometer, 0, 1023, 0, 255);
  if (millis()-tempoMillis > accensione)
  {
    analogWrite (red, 255 - OutputVal);
    analogWrite (blue, 0 + OutputVal);
    analogWrite (green, OutputVal);
    
    tempoMillis = millis();
    
  }
}

E’ proprio una sciocchezza giusto per provare qualcosa di diverso…

E' proprio una sciocchezza giusto per provare qualcosa di diverso...

Ok, ma il potenziometro non puoi collegarlo ad un pin digitale, lo devi collegare su un Analogico ( da A0 a A6 )