IKEA è famosa per i suoi fantastici prodotti low cost.

La nostra attenzione è stata catturata dalla lampada a fibre ottiche Strala

Visto il basso costo (circa 5 €) abbiamo deciso di acquistarne 3 pezzi.
La luce è carina ma nulla di particolare. Il classico bianco fisso…

Quindi è iniziata la modifica.

L’obiettivo era quello di trasformare il bianco smorto in un bel mix di colori con un led RGB.
Per velocizzare lo sviluppo abbiamo utilizzato un Arduino, che risulta fin sprecato per questa applicazione.
Si possono utilizzare allo stesso modo un PIC12F675, o un ATTiny.

E questo è il risultato:


YouTube

How to

Prima di tutto è necessario acquistare una lampada STRÅLA

Questo il contenuto della confezione

Disassemblare la parte centrale che contiene il led bianco.

Come potete vedere il led bianco ha un cono al centro per diffondere meglio la luce
Per questo motivo abbiamo modificato e levigato anche il nostro led RGB.

Collegate ai terminali del led una resistenza da 100 ohm per i colori Blu e Verde e da 180 ohm per il colore Rosso. Unite dei fili e dei pin femmina.

Realizzate invece con degli strip maschi un adattatore come in figura.

Collegate questo adattatore alle porte PWM di arduino e i fili relativi all’anodo del led al +5V.

Ecco i fili collegati ad Arduino

Lo sketch di Arduino

/* IKEA Strala mods

 created 2011
 by Boris Landoni

 This example code is in the public domain.

http://www.open-electronics.org

http://www.futurashop.it

http://blog.elettronicain.it/

 */

#include <EEPROM.h>

int red = 9;    // RED LED connected to PWM pin 3
int green = 10;    // GREEN LED connected to PWM pin 5
int blue = 11;    // BLUE LED connected to PWM pin 6
int r=50; int g=100; int b=150;
int rup; int gup; int bup;
int fader=1;
int inc=10;
void setup()
{
  // start the Ethernet connection and the server:
      Serial.begin(9600);
      Serial.println("Serial READY");
      r = EEPROM.read(1);
      g = EEPROM.read(2);
      b = EEPROM.read(3);
      inc = EEPROM.read(4);
      fader = EEPROM.read(5);
      rgb(r, g, b);
}

void loop()  {

  if (fader==1){
    funcfader();
  }

}

void funcfader(){
    Serial.println("fader");
    if (rup==1){r+=1;}
    else{r-=1;}
    if (r>=255){rup=0;}
    if (r<=0){rup=1;}

    if (gup==1){g+=1;}
    else{g-=1;}
    if (g>=255){gup=0;}
    if (g<=0){gup=1;}

    if (bup==1){b+=1;}
    else{b-=1;}
    if (b>=255){bup=0;}
    if (b<=0){bup=1;}

    delay(inc*2);
    rgb(r, g, b);
}

void rgb(int r, int g, int b)
{

  Serial.print("RGB: ");
  Serial.print(r);
  Serial.print(" ");
  Serial.print(g);
  Serial.print(" ");
  Serial.print(b);
  if (r>255) r=255;
  if (g>255) g=255;
  if (b>255) b=255;
  if (r<0) r=0;
  if (g<0) g=0;
  if (b<0) b=0;

  analogWrite(red, r);
  analogWrite(green, g);
  analogWrite(blue, b);
}

Good modding