Modifichiamo una lampada IKEA con Arduino


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

12 pensieri riguardo “Modifichiamo una lampada IKEA con Arduino

  • 14/11/2011 in 18:26
    Permalink

    Una domanda: perchè leggi i valori r,g,b,inc e fader dalla Eprom se non vengono mai scritti da nessuna funzione dello sketch?

    Grazie in anticipo.

    Risposta
  • 14/11/2011 in 18:54
    Permalink

    😀 perchè ho riciclato un vecchio sketch scritto per un’altra lampada….

    Boris

    Risposta
  • 14/11/2011 in 21:32
    Permalink

    a giorni mi arriva un arduino e ho trovato molte utili le vostre informazioni dei vari tutorial che avete scritto…
    grazie.. 😀

    Risposta
  • 14/11/2011 in 23:09
    Permalink

    sara che io l’ho provato ma non finziona mi da mille errori tipo eeprom
    (printIn)e un errore con la in e un errore poi mi da errore
    su r = eeprom.read (1) mi da errore chi l’ho ha fatto mi puo dare
    delle dritte? ho corregere?

    Risposta
  • 15/11/2011 in 10:00
    Permalink

    bene, più tardi andrò a comprare arduino

    Risposta
  • 15/11/2011 in 22:34
    Permalink

    Bubu, cancella le righe dalla 30 alla 34. In pratica sono quelle che riportano eeprom.read, o se preferisci mettile come commento con “//”

    // r = EEPROM.read(1);
    // g = EEPROM.read(2);
    // b = EEPROM.read(3);
    // inc = EEPROM.read(4);
    // fader = EEPROM.read(5);

    Risposta
  • 17/11/2011 in 22:46
    Permalink

    mauro scusa se ti scoccio ma il led tx e normale che resti acceso fisso se si bene se no mi haiuti e grazie di cuore per la dritta ora e tutto ok

    Risposta
    • 18/11/2011 in 13:08
      Permalink

      Bubu, non so dirti. Sto ancora aspettando che mi arrivo l’arduino e dopo potrò fare qualche test con l’hardware. Guardando il sorgente credo che sia giusto che sia acceso, l’istruzione serial comunica con il tuo pc visualizzando delle informazioni.
      Se vuoi fare una prova, togli o metti un rem “//” su tutte le righe dove c’è un serial….

      Risposta
  • 18/11/2011 in 21:29
    Permalink

    Ciao Bubu,
    io uso arduino da molto tempo e anche utilizzando la seriale in modo continuo il led tx non resta mai acceso fisso, hai provato a premere reset dopo aver trasferito lo sketch?
    Al di là del led tx poi il progetto funziona?

    Ciao
    Mauro Alfieri

    Risposta
  • 30/11/2011 in 21:24
    Permalink

    alfieri si ho fatto come dici tu e funzione bene ho dato il reset e infatti si spegne un grosso grazie a tutti di cuore

    Risposta

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ricevi un avviso se ci sono nuovi commenti. Oppure iscriviti senza commentare.