RGB Shield arduino strip led

La RGB Shield ti permette di controllare led ad alta luminosità ed è particolarmente interessante in combinazione alle strisce di led.

RGB shield arduino

mi sono procurato una striscia di led RGB ed una RGB Shield per testare alcuni progetti che vorrei realizzare per l’arredo casalingo come lampade, lampadari e illuminazione di ambienti.

Il primo passo quando ho in mente un progetto è lo studio dei componenti necessari sia dal punto di vista hardware ( shield, strip led, connettori, alimentazione, .. ) sia dal punto di vista software.

Mi sono quindi procurato:

  • n.1 arduino uno R3
  • n.1 RGB Shield
  • n.1 alimentatore per Strip RGB ( adeguato al numero di led della striscia che prevedi di accendere )

Il seocndo passo è stato lo studio della shield.

Come è fatta la RGB Shield

Dal sito ufficiale ho preso il PDF RGB di descrizione della RGB shield da cui ho appreso sia o schema:

RGB shield schema

sia l’elenco dei componenti, in cui comprendi facilmente che il componente principale è il Mosfet STP36NE06 e che i pin usati sono:

Pin Arduino Led RGB shield
3 Rosso ( R )
5 Verde ( G )
6 Blu ( B )

Passando al datasheet del mosfet ho trovato che è in grado di lavorare con correnti fino a 36A e tensioni di 60V:

RGB shield STP36NE06

anche se il componente può lavorare con tensioni e correnti molto elevate la RGB shield è data per un funzionamento a 12v o 24v ed un massimo di 6A.

Il primo sketch per la RGB shield

Per eseguire il primo test della RG Shield ho utilizzato il seguente sketch:

int RED = 3;
int GREEN = 5;
int BLUE = 6;
int brightness = 0;
int DELAY = 5;

void setup() {
  pinMode(RED, OUTPUT);
  pinMode(GREEN, OUTPUT);
  pinMode(BLUE, OUTPUT);
}

void loop() {

  for (brightness = 0; brightness < 255; brightness ++) {
    analogWrite(RED, brightness);
    delay(DELAY);
  }
  for (brightness = 255; brightness > 0; brightness --) {
    analogWrite(RED, brightness);
    delay(DELAY);
  }
  analogWrite(RED, 0);

  for (brightness = 0; brightness < 255; brightness ++) {
    analogWrite(GREEN, brightness);
    delay(DELAY);
  }
  for (brightness = 255; brightness > 0; brightness --) {
    analogWrite(GREEN, brightness);
    delay(DELAY);
  }
  analogWrite(GREEN, 0);

  for (brightness = 0; brightness < 255; brightness ++) {
    analogWrite(BLUE, brightness);
    delay(DELAY);
  }
  for (brightness = 255; brightness > 0; brightness --) {
    analogWrite(BLUE, brightness);
    delay(DELAY);
  }
  analogWrite(BLUE, 0);


  for (brightness = 0; brightness < 255; brightness ++) {
    analogWrite(GREEN, brightness);
    analogWrite(RED, brightness);
    analogWrite(BLUE, brightness);
    delay(DELAY);
  }
  for (brightness = 255; brightness > 0; brightness --) {
    analogWrite(GREEN, brightness);
    analogWrite(RED, brightness);
    analogWrite(BLUE, brightness);
    delay(DELAY);
  }

  for (brightness = 10; brightness > 0; brightness --) {
    analogWrite(GREEN, 0);
    analogWrite(RED, 0);
    analogWrite(BLUE, 0);
    delay(50);
    analogWrite(GREEN, 255);
    analogWrite(RED, 255);
    analogWrite(BLUE, 255);
    delay(50);
  }

  for (brightness = 10; brightness > 0; brightness --) {
    analogWrite(GREEN, 0);
    analogWrite(RED, 0);
    analogWrite(BLUE, 0);
    delay(50);
    analogWrite(GREEN, 0);
    analogWrite(RED, 255);
    analogWrite(BLUE, 0);
    delay(50);
  }
  for (brightness = 10; brightness > 0; brightness --) {
    analogWrite(GREEN, 0);
    analogWrite(RED, 0);
    analogWrite(BLUE, 0);
    delay(50);
    analogWrite(GREEN, 0);
    analogWrite(RED, 0);
    analogWrite(BLUE, 255);
    delay(50);
  }
  for (brightness = 10; brightness > 0; brightness --) {
    analogWrite(GREEN, 0);
    analogWrite(RED, 0);
    analogWrite(BLUE, 0);
    delay(50);
    analogWrite(GREEN, 255);
    analogWrite(RED, 0);
    analogWrite(BLUE, 0);
    delay(50);
  }

  analogWrite(GREEN, 0);
  analogWrite(RED, 0);
  analogWrite(BLUE, 0);
}

in cui noti subito che ci sono dei blocchi di codice che si ripetono, vediamo quali iniziando dalle prime linee:

linee 01-03: definisci i 3 pin a cui sono connessi i Mosfet che controlleranno ciascuno un colore della tua striscia led;

linea 04: definisci una variabile che userai per memorizzare i valori di luminosità durate il ciclo;

linea 05: imposta un valore per la variabiel DELAY di default;

linee 08-10: definisci la modalità in cui userai i pin relativi ai 3 output della shield;

linea 15: crea un ciclo for in cui fai variare il valore di brightness da 0 a 255;

linea 16: applica il valore corrente di brightness al led rosso con il comando analogWrite( pin, valore );

linea 17: attendi il delay impostato alla linea 05;

linea 19: imposta un ciclo for in cui il valore di brightness passa da 255 a 0;

linea 20: applica il valore di brightness al led rosso;

linea 21: attendi tra un valore ed il successivo il tempo impostato per DELAY;

linea 23: imposta a 0 il valore del led rosso;

linee 25-33: esegui le medesime operazioni viste per le linee 15-23 applicandole al led green;

linee 35-43: esegui le medesime operazioni viste per le linee 15-23 applicandole al led blu;

linee 46-57: crea un ciclo ascendente 0-255 ed un ciclo discendente 255-0 ma applicandolo contemporaneamente ai tre led;

linee 59-68: passando da un valore 10 a 0 per la variabile brightness esegui lo spegnimento dei tre led e la successiva accensione dopo 50 millisecondi per ciascun ciclo. L’effetto è un veloce lampeggio di tutti i led contemporaneamente per 10 cicli successivi;

linee 70-99: esegui 3 cicli separati di 10 valori ciascuno in cui ogni singolo colore del led si accende. La sequenza produrrà 10 lampeggi del led rosso, 10 lampeggi del led blu e 10 lampeggi del led verde;

linee 101-103: imposta a 0 il valore dei tre led a fine di ciascuna sequenza di accensione, alla fine di ogni loop()

Ho trovato una applicazione maker interessante realizzata con una strip RGB controllabile in seriale da arduino con il WS2811/WS2812 ma che potresti riprodurre tranquillamente con la RGB shield:

lampada RGB shield

puoi trovare tutti i dettagli del progetto in questo link, in cui ho trovato anche il seguente video:

Progetti futuri RGB

In un prossimo futuro ho in mente di connettere questa shield ad una Ethernet o Wifi shield per collegarmi da remoto e controllare la striscia RGB direttamente dal mio cellulare come già fatto con il singolo RGB in questo articolo.

RGB shield Ethernet

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/rgb-shield-arduino-strip-led.html

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.